1.参数的类型
不可变类型:类似c++的值传递,如整数,字符串,元组.
如fun(a)m,传递的只是a的值,没有影响a对象本身.
比如在fun(a)内部修改a的值,只是修改另一个复制的对象,不会影响a本身。
可变类型:类似c++的引用传递,如列表,字典,集合
如fun(la),则是将la真正的传过去,修改后fun外部的la也会受影响
def print_info(name,age = 18):
print('Name:%s\nAge:%s'%(name,age))
print_info('arry',20)
print_info('arry')
def change_int(a):
a = 1
a = 2
change_int(a)
print(a)
def change_list(a):
a = a.append(5)
t = [1,2,3]
change_list(t)
print(t)
2.以下是调用函数时可使用的正式参数类型:
- 必备参数
- 关键字参数
- 默认参数
- 不定长参数
3.参数的顺序是:必备参数,关键字参数,不定长参数
4.关键字参数
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
可用*来决定哪些参数是关键字参数
def print_info(name,age,num1,*,num2):# *:之前的是顺序赋值,之后的必须使用关键字赋值
print(name ,age ,num1 ,num2)
print_info('小明',20,10,num2=18)
5. 缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
def print_info(name,age = 18):
print('Name:%s\nAge:%s'%(name,age))
print_info('arry',20)
print_info('arry')
6.不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。
这些参数叫做不定长参数
def functionname([formal_args,] *args,**kwargs ):
"函数_文档字符串"
function_suite
return [expression]
*args:将输入的参数存到元组中。
**kwargs:将输入的参数存到字典中。输入的参数的形式必须是:变量名=值 如name= '王明'
def print_info(name,*args,**kwargs):
print('Name:%s'%(name))
print(args)
print(kwargs)
print_info('arry',20,10,30,id='20')
#传入一个列表,分别赋值到args中。
ls = [1,2,3,4,5]
print_info('arry',*ls)