1、位置参数
例子:
# 声明函数,需要传入三个参数
In [1]: def func(name, age, gender):
...: print('名字:', name)
...: print('年龄:', age)
...: print('性别:', gender)
...:
# 调用函数
In [2]: func('张三', '20', '男')
名字: 张三
年龄: 20
性别: 男
含义:调用函数时传入三个参数,根据参数的顺序依次传入:name
--'张三'、age
--'20'、gender
--'男'
参数位置混乱例子:
# 声明函数,需要传入三个参数
In [1]: def func(name, age, gender):
...: print('名字:', name)
...: print('年龄:', age)
...: print('性别:', gender)
...:
# 调用函数
In [2]: func('20', '男', '张三')
名字: 20
年龄: 男
性别: 张三
可以看到,位置传参时必须对应好参数的位置,否则就会出错
2、关键字参数
语法:func(参数1='值1', 参数2='值2')
例子:
# 声明函数,需要传入三个参数
In [1]: def func(name, age, gender):
...: print('名字:', name)
...: print('年龄:', age)
...: print('性别:', gender)
...:
# 调用函数
In [2]: func(age='20', gender='男', name='张三')
名字: 张三
年龄: 20
性别: 男
含义:为每个参数指定传入的值,不用去管参数的位置
3、默认参数
调用函数时未按要求传入参数程序会报错:
# 声明函数,需要传入三个参数
In [1]: def func(name, age, gender):
...: print('名字:', name)
...: print('年龄:', age)
...: print('性别:', gender)
...:
# 调用函数
In [2]: func(name='张三', age='20')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-d26d9c8520b8> in <module>
----> 1 func(name='张三', age='20')
TypeError: func() missing 1 required positional argument: 'gender'
报错翻译为:TypeError: 缺少1个必需的位置参数:'gender'
设置默认参数语法:
def func(name, age, gender='男'):
代码块
这里为gender
设置了默认参数'男'
,在调用函数时不传入gender
参数时默认就为'男'
例子:
# 声明函数,需要传入三个参数
In [1]: def func(name, age, gender='男'):
...: print('名字:', name)
...: print('年龄:', age)
...: print('性别:', gender)
...:
# 调用函数
In [2]: func(name='张三', age='20')
名字: 张三
年龄: 20
性别: 男
当一个参数不是必须穿入时,就可以使用默认参数给定默认值
4、变量作用域
在函数内部声明的变量为局部变量,函数外部不可进行调用,否则会报错
例子:
In [1]: def func():
...: num1 = 10
...: print(num1)
...:
In [2]: func()
10
In [3]: num1
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-11-d05396c398c6> in <module>
----> 1 num1
NameError: name 'num1' is not defined
错误信息:NameError:没有定义名称“num1”
将局部变量变为全局变量有两种方式:global
关键字,return
语句
global
关键字例子:
In [1]: def func():
...: global num1
...: num1 = 10
...: print(num1)
...:
In [2]: func()
10
In [3]: num1
Out[3]: 10
含义:global num1
定义了一个全局变量num1
,所以在函数外部也可以进行使用
return
语句例子:
In [1]: def func():
...: num1 = 10
...: print(num1)
...: return(num1)
...:
In [2]: func()
10
Out[2]: 10
In [3]: num1
Out[3]: 10
含义:return
语句返回函数的运行结果,也叫返回值,所以func
函数的返回值就是num1
,如果一个函数没有return
语句,那这个函数的返回值就为None
,代表这个函数没有运行结果