python基础整理笔记(三)

一. python的几种入参形式:
1.普通参数:
普通参数就是最一般的参数传递形式。函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参。
示例:

1 def f(a, b):
2   print(a,b)
3 f(1, 2)

2. 指定参数:
指定参数就是在函数调用时,给传入的实参加上其对应的形参的参数名,这样实参的顺序就可以不用和形参完全一一对应的顺序。
示例:

1 def f(a, b):
2   print(a, b)
3 f(b=1, a=2)

3. 默认参数:
默认参数是在函数的形参处直接设定好一个参数的值,在函数调用的时候,可以不传入对应这个形参的实参,当不传入参数时,会直接取这个设定的默认值。当传入时,会用传入的值。
此外要注意,有默认值的参数,需要放在所有无默认值的参数之后。
示例:

1 def f (a, b=1, c=2):
2     print(a,b,c)
3 f(1,2)

4. 动态参数:
动态参数就是可以在函数的形参处不指定具体的名称与个数,在函数被调用时,传入的实参皆可在函数中获得。
动态参数有两种形式,一种以列表的形式,一种以字典的形式。
(1) 当以列表形式的时候,在函数调用时,实参的传递与普通的方式类似,直接传入;形参获取到的是一个列表的形式,元素为传入的每个实参。
示例:

1 def f(*args):
2     for i in args:
3     print(i)
4 f(1,23,3)

(2) 当以字典形式时,在函数调用时,实参传递类似制定参数的方式;形参获得的是一个字典。
示例:

1 def f(**kargs):
2     for k, v in kargs.items():
3         print(k, v)
4 f(k1=1, k2=2)    

(3) 此外两种形式也可以一起使用,并且也可以和其他类型如普通参数,有默认值的参数一起使用。
此外需要注意的是,列表形式的动态参数需要放在普通参数和默认值参数之后,字典形式的动态参数,需要放在所有类型的参数之后。
示例:

1 def f(a, b=1, *args, **kargs):
2     print(a,b)
3 for i in args:
4     print(i)
5 for k, v in kargs.items():
6     print(k, v)
7 f(1,2,22,33,k1=4,k2=5)

(4) 另外还有种向函数传递默认参数的方法,即在函数调用时,在传入的列表前加*,在传入的字典前加**,这样被传入的参数就不会被当做是一整个列表或字典,而是动态参数。
示例:

1 a = [1,2]
2 k = {‘k1‘:1, ‘k2‘:2}
3 def f(*args, **kargs):
4 for i in args:
5     print(i)
6 for k, v in kargs.items():
7     print(k, v)
8 f(*a, **k)

二. python参数的引用传递

虽然python中并没有类似C语言中的显示支指出传递参数还是引用或者指针这种类似设计,但实际上,当python函数的入参是list, tuple, dict, set, deque等容器时候,传入的其实是引用即其本身,而非复制的结果。

在函数内部修改这些入参后,操作的即传入的实参的内存,所以即使出了函数外部,实参也被改变了。

(1)传入list的示例:

(2)传入dict的示例:

(3)传入set的示例:

(4)另外需要注意的是,如果在函数内部,将传入的容器类参数做一个重新赋值,那么当出了函数以后,原版的实参值并不变。这是因为在函数内部赋值,其实把函数的形参指向了一块新的内存,原本的容器值并没有改变,等到出了作用域,自然会发现值没变。示例:

三. set的常用方法与时间复杂度

set是一个无需不重复的元素集合,此外与list和tuple的主要区别是,支持方便直接地做一些集合运算,如:

并集、交集、差集、判断是否子集、判断是否父集。当然也支持增加与删除元素等操作。
时间复杂度如下:

时间: 2024-10-21 16:40:29

python基础整理笔记(三)的相关文章

python基础整理笔记(一)

一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). 1 # -*- coding: utf-8 -*- 2 3 print 'hello world' 2. str类型也是经过编码的有各种格式,和unicode字符串之间需要通过decode和encode互相转换.使用示例如下: 1 a = '中文' 2 3 b = a.decode('utfi-8') 4 5 c = b.encode('gb2312') 3. 在p

python基础整理笔记(二)

一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似STL中的vector,会预先分配一定长度的内存,当不够时,会申请新的更大的一块内存,将原有的数据copy过去.删除的情况也是类似的相反情况,所以如果存储的元素数量常有巨变,使用deque来代替比较好.deque是一个双向链表,不会去copy元素. 而从上图中我们也可以看出,判断 x in s的复杂

python基础整理笔记(五)

一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 算法: md5生成一个32位的16进制字符: SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示,比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,切长度更长. 以MD5为例,一般的计算方法如下: m = hashlib.md5() a = 'tes

python基础整理笔记(七)

一. python的类属性与实例属性的注意点 1 class TestAtt(): 2 aaa = 10 3 4 def main(): 5 # case 1 6 obj1 = TestAtt() 7 obj2 = TestAtt() 8 print obj1.aaa, obj2.aaa, TestAtt.aaa 9 10 # case 2 11 obj1.aaa += 1 12 print obj1.aaa, obj2.aaa, TestAtt.aaa 13 14 # case 3 15 Te

python基础整理笔记(九)

一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消息之间的分隔,造成读取的时候把前后多条消息的内容连起来读出来,就造成了错误.比较靠谱的解决方式是:一端在发送完消息以后,需要接收一次消息,另一端在第一次接收完消息以后,发送一次消息,这样间隔处理:这样就会保证每次接收的消息都是完整到结束的,因为对方在每次发送完整消息以后,都会接收消息以停止发送.在接

python基础整理笔记(八)

一. python反射的方式来调用方法属性 二. python类的一些注意点 1. 父类的方法里面用到子类的属性方法:其实是子类才会调用实例化调用父类的这个方法,所以不会出错 2. 特殊方法 __call__, 3. 特殊方法__iter__ 4. property, XXX.setter装饰器

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

python基础语法(三)

--------------------------------------------接 Python 基础语法(二)-------------------------------------------- 七.面向对象编程 python支持面向对象编程:类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例. 对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为域:对象也可以使用属于类的函数,这样的函数称为类的方法:域和方法可以合称为类的属性. 域有两种类

Python基础学习笔记(三)

python 基础笔记之寻求帮助 1.寻求帮助 python中的帮助文档和shell中的一样,也是相当丰富的,可以使用 help(object) 来查看帮助,其中object 是你要查找帮助的对象,比如,查看dir的功能,可以用 >>> help(dir) 2.查看python中的内置函数.内置类,及其他内置对象 >>> dir(__builtins__) 3.查看对象自身的类型或者是函数作用的参数类型 1)查看对象自身的类型:在python交互式shell中直接输入