Python学习第11天_参数

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,代表这个函数没有运行结果

原文地址:https://www.cnblogs.com/jianwen520/p/13131572.html