python基础和注意点概要

1. 只有在形参表末尾的那些参数可以有默认参数值
例如,def func(a, b=1) 是有效的,但是 def func(a=1, b) 是无效的。

2. 默认参数的值是不可变的对象,比如None、True、False、数字或字符串
例如;def print_info( a , b = [] ): 就是错误的

3. 回调函数
定义:
一般情况下,应用程序会时常通过API调用库里所预先备好的函数。但是有些库函数却要求应用先传给它一个函数,
好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数。

打个比方:
有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,
睡得死怕耽误事的,还可以要求往自己头上浇盆水。
“叫醒”这个行为是旅馆提供的,相当于库函数,
“叫醒的方式”是由旅客决定并告诉旅馆的,也就是回调函数;
而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数。

实例:
http://blog.csdn.net/tchenjx/article/details/51661173

4. 所有的变量都可以理解是内存中一个对象的“引用”
可变对象一旦创建之后还可改变但是地址不会发生改变,即该变量指向的还是原来的对象,不可变对象相反
strings, tuples, 和numbers是不可更改的对象,而 list, dict, set 等则是可以修改的对象

值传递:将参数a的值作为参数传递进去,程序运行完a的值不改变
引用传递:将参数a的地址传递进去,程序运行完a的值随之改变

python不允许程序员选择传值还是传引用,
如果函数接受的是一个不可变对象,则为值传递;
如果函数接受的是一个可变对象,则为引用传递。

匿名函数
lambda x,y: x+y
filter(lambda x:x>3,[1,2,3,4,5])

反转字符串 text="abcdef"
1)text[::-1]
2)转换成list,用其reverse函数

[:end:]和range(,end,) 都是输出到end-1,比如:
text="abcdef"
print text[:5] #abcde

博客:
https://changchen.me/about/
http://ssdxiao.github.io/ 虚拟化

a = [1,2,3]
b = [4,5,6]
zipped = zip(a,b) # 打包为元组的列表[(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式[(1, 2, 3), (4, 5, 6)]

函数调用问题(下面代码会输出什么)
https://www.cnblogs.com/zhangqigao/p/6397853.html 问题6
第3次是建立在第1次函数调用的基础上,l = [0,1]

5. 实例方法/类方法/静态方法

6. yield
iterables -> generators -> yield

列表推导式: mylist = [x*x for x in range(3)]

生成器也是迭代器的一种,但是你只能迭代它们一次.
原因很简单,因为它们不是全部存在内存里,它们只在要调用的时候在内存里生成
mygenerator = (x*x for x in range(3))
生成器和迭代器的区别就是用()代替[],还有你不能用for i in mygenerator第二次调用生成器

Yield的用法和关键字return差不多,会返回一个生成器
Yield你必须先理解当你调用函数的时候,函数里的代码并没有运行.函数仅仅返回生成器对象
每当for语句迭代生成器的时候你的代码才会运转

7. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。
http://blog.csdn.net/chenjinyu_tang/article/details/8136841

8. 爬虫
1. urllib2库、xpath
获取标签内的text
info = bloger[0].xpath(‘string(.)‘).encode(‘utf-8‘).strip()

文件转化为html格式进行分析
from lxml import etree
record = open("test.html",‘r‘)
tree = etree.HTML(record.read())
desc = tree.xpath("//dt[text()=‘Bugzilla:‘]")[0].getnext().xpath(‘string(.)‘)
pattern = re.compile("CVE-\d+-\d+ .*:")
print re.findall(r" (.*):", pattern.findall(desc)[0])[0]

2. excel
import xlwt
workbook = xlwt.Workbook()
sheet = workbook.add_sheet(‘sheet‘,cell_overwrite_ok=True)
sheet.write(0, 0, ‘EnglishName‘) #(行,列,写入内容)
workbook.save(‘test.xls‘)

3. 正则
record = open(suse_path+cve,"r").read() #文本内容转化为string
pattern = re.compile("h4\>\n.*\n\<hr\>")
print pattern.findall(record)[0]

9. 新式类是广度优先,旧式类是深度优先

10. 浅拷贝和深拷贝
直接赋值:传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
浅拷贝:子对象没有拷贝,所以原始数据改变,子对象会改变
深拷贝:全部拷贝,原始数据怎么变也不会导致拷贝后的元素改变

11.使用for从序列中得到的每一个对象,事实上都是从原序列中复制了一份。
因此对此对象进行处理时,只是处理了复制体,并没有影响到原序列

原文地址:https://www.cnblogs.com/stellar/p/8484930.html

时间: 2024-08-12 11:12:36

python基础和注意点概要的相关文章

Python基础学习 总结篇

Python基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结构(概要) Python学习(四)数据结构 —— int float Python学习(四)数据结构 —— str Python学习(四)数据结构 —— bool Python学习(四)数据结构 —— list tuple range Python学习(四)数据结构 —— set frozenset

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

Python基础入门 (一)

一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out

Python 基础 - Day 4 Learning Note - Generator 生成器

列表生成器/列表解析 list comprehension 简单灵活地创建列表,通常和lambda(), map(), filter() 一起使用 通过列表生成式, 直接创建列表.但是,收到内容限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问几个元素,那其他的就白占空间.列表生成器能够一边循环一边计算,大大节省大量的空间.是生成器的一种. 只有调用,才能生成. 不支持切片操作,只能通过__next()___一个个取数字. 基本语法

python基础教程(第二版)

开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3章使用字符串 python基础第4章字典 python基础第5章循环 python基础第6章函数和魔法参数 python基础第7章类 python基础第8章异常 python基础第9章魔法方法.属性和迭代器 python基础第11章文件 python基础第12章GUI(wxPython) pytho

python基础周作业

python基础周作业 1.执行python脚本的两种方法 脚本前面直接指定解释器 在脚本开始前声明解释器 2.简述位,字节的关系 每一个字节占用八个比特位 3, 简述ascii.unicode.utf- ‐8.gbk的关系 utf--‐8 <-- unicode <-- gbk <-- ascii 按此方向兼容 4..请写出"李杰"分别用utf- ‐8和gbk编码所占的位数 "李杰" 占用utf -8 占6字节 , gbk 占用4字节 5.pyt

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.