目录
在pycharm中使用Ctrl+Q查看用法时,便可查看到你为函数写的注释。这点在他人阅读你的代码时会带来便利。
三、函数的参数
参数顺序:位置参数->*args->默认参数->**kwargs(从左往右)
1.形参与实参
形参就是在函数中定义参数的变量名,实参就是调用函数时实际传入的参数。
当实参是不可变类型时,在函数中不能修改实参,只能将实参赋予新变量后再修改。
def f(b):
print(b)
print(id(b))
a=100
print(id(a))
print(f(a))
>>>498825328
>>>100
>>>498825328
如果实参是可变数据类型的,在函数中修改的话,会改变实参。
def f(b):
b.append(4)
print(b)
print(id(b))
a=[1,2,3]
print(id(a))
print(f(a))
print(a)
>>>41803592 #a的id
>>>[1, 2, 3, 4] #b
>>>41803592 #b的id
>>>[1, 2, 3, 4] #a
不可变数据类型:整数,字符串,元祖等
可变数据类型:数列,字典等
2.默认参数
参数可以设置默认值,即:
def f(x,num=1):
pass
f(3)
3.接收多个参数
*args\**wkargs
使用*args可以接收多个位置参数,使用**wkargs可以接收多个关键字参数(*之后的变量名可以自定义,但是推荐使用args)
def f(*args): #接收到的参数会组成一个元祖
print(args)
f([1,2,3,4])
>>>(1, 2, 3, 4)
def func(**kwargs): #接收到的关键字参数会组成一个字典
print(kwargs)
func(name='zs',age=14)
>>>{'name': 'zs', 'age': 14}
’*‘的扩展用法
*还可以起到打散的作用。在元祖、数列等前加‘*’,可以将其中的每个元素都取出。可以便捷的将列祖的每一个值传给函数的参数。
print(*'hello')
>>>h e l l o
print(*(1,2,4))
>>>1 2 4
def func(name,age): #’**’打散字典
print(name,age)
dic={'name': 'zs', 'age': 14}
func(**dic)
>>>zs 14
四、函数退出与返回值
return
函数的返回值可以用return语句返回,例如:
def my_abs(x):
if x >= 0:
return x
else:
return -x
同时也可以接收多个返回值
def f():
pass
return x,y
num1=f() #多个返回值会组成一个元祖输出
return也可用作结束函数的语句使用,因为运行到return时不管后面还有没有代码,函数都会直接退出。因此,可以作为函数中结束if、while循环的语句使用。
五、命名空间
含义:
命名空间表示着一个标识符的可见范围 ,一个标识符可以在多个命名空间中定义,而它在不同命名空间中的含义是互不干涉的。
分类:
Python中的命名空间大致分为内置命名空间、全局命名空间和局部命名空间。
内置命名空间是记录Python内置函数的命名空间。
全局命名空间是一个.py文件内部所含的所有标识符,包括调用的模块的命名空间。可以使用‘globals()’来显示当前所有全局命名空间的内容,结果以字典的形式展示。注意,函数只会显示当前函数迭代器,不会进一步显示函数内部的标识符。
局部命名空间是一个函数