本文涉及的python基础语法为def函数,return,函数的各参数示例,匿名函数等
函数是一段组织好的
\ 可重复使用的
\ 用来实现特定功能的
代码块。
函数能提高代码的模块性,和代码的重复利用率,使一些重复编写的代码简洁化,增加代码的可读性和美观性。
函数
比作电饭煲
,给它添加米饭
和水
,利用它的煮饭功能
,就可以得到米饭
米饭
和水
就是需要传递
给函数
的参数
,而煮饭功能
就是一段可以重复利用的代码块
,米饭
就是利用函数
得到的输出
。定义一个自定义函数需要遵循以下的规则:
def
关键字开头,后接函数标识符名称和圆括号():a = 0
def example(x):
a = a + x
return a
def
是函数定义的关键字(define
的缩写),example
是我们自定义的一个函数名称
,括号里面的x
表示一个参数
英文 :
!Python 中的函数以英文冒号开始,并且需要缩进,以表示接下来是函数内部的代码了a = a + x
和return a
为函数的函数体,这部分就是函数的功能实现和输出返回值的地方return [表达式]
结束函数,并将a
的值返回给调用方。不带表达式的return相当于返回 None我们通过一个案例来理解一下
我们设计了一个简单的计算器,用来计算x * y 的值
def math(x, y): # 这里我们给math函数传入两个参数,分别是x和y,这里的x和y是math()的形参
num = x * y # 我们将x * y 的值赋值给num
return num # return将x * y 的值返回给math函数,并结束函数
x = int(input('请输入一个整数:')) # 在键盘输入一个整数并进行类型转换赋值给x
y = int(input('请输入一个整数:')) # 在键盘输入一个整数并进行类型转换赋值给y
print(math(x, y)) # 调用math函数,并将math函数的值打印出来,这里的x和y是math()的实参
python函数应用案例
在上面的例子中,我们讲到了形参和实参,那么具体该如何区分它们呢?
参数名 | 描述 |
---|---|
形参 | 定义函数时传入的参数 |
实参 | 调用函数时传入的参数 |
关键字参数 | 使用关键字参数允许函数调用时参数的顺序与声明时不一致 |
必备参数 | 须以正确的顺序传入函数。调用时的数量必须和声明时的一样 |
默认参数 | 调用函数时,默认参数的值如果没有传入,则被认为是默认值 |
不定长参数 | 函数能处理比当初声明时更多的参数,这些参数叫做不定长参数 |
def math(x, y):
num = x * y
return num
print(math(y = 2 , x = 1)) #我们指定了传入参数的值,可以允许函数调用的时候顺序不与形参一致
#输出:2
def math(x):
num = x * 2
return num
print(math()) #我们没有对函数传入参数,结果就发生了错误
#输出:TypeError: math() missing 1 required positional argument: 'x'
def math(x , y = 5): #默认参数y的值为2
num = x * y
return num
print(math( x = 1,y = 2 )) #当函数调用的时候,默认参数y的值传入为2,替换了默认的值
#输出:2
print(math(x = 2 )) ##当函数调用的时候,没有调用默认参数,那么y的值为5
#输出:10
#可变参数 *args 被打包成 tuple 元组
def demo(a, b, *args):
print(a)
print(b)
print(args)
demo(1, 2 , 3 , 4 , 5)
#输出:
1 # a的值为1
2 # b的值为2
(3, 4, 5) # args为一个元组(3, 4, 5)
#关键字可变参数 **kwargs 被打包成 dict 字典,注意kwargs前面有两个*号
def demo(a, b, **kwargs):
print(a)
print(b)
print(kwargs)
demo(1, 2 , name = 'python工程狮', age = '28')
#输出:
1 # a的值为1
2 # b的值为2
{'name': 'python工程狮', 'age': '28'} #**kwargs为一个字典
#匿名函数语法结构
num = lambda 参数1, 参数2...: 函数表达式 #不限制关键词个数
#使用示例:
num = lambda x, y : x * y
print('他们相乘的积是:', num(5, 2))
#输出: 他们相乘的积是: 10
print('{}乘以{}的积是:{}'.format(5 , 2 , num(5, 2)))
#输出: 5乘以2的积是:10
程序的所有的变量并不是在任何位置都可以访问的。能否访问取决于这个变量是在哪个位置赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。两种最基本的变量作用域是:
变量 | 定义 | 访问权限 |
---|---|---|
全局变量 | 在函数内部定义的变量拥有一个局部作用域 | 局部变量只能在被声明的函数内部访问 |
局部变量 | 在函数外部定义的变量拥有一个全局作用域 | 全局变量可以在整个程序范围内访问 |
#全局变量和局部变量的使用示例
num = 1 #这里的num是全局变量
def fuc(x , y):
num = x + y #这里的num是局部变量
print('这是函数内的局部变量:' , num)
fuc(5, 10)
#输出:这是函数内的局部变量: 15
print('这是函数外的全局变量:' , num)
#输出:这是函数外的全局变量: 1
假如存3年,那么:利息=2000×累计月积数×(3.8%÷12), 累计月积数=(36+1)÷2×36