今天开始函数相关学习。
1 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
1.1 定义函数
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
格式如下:
def 函数名(参数列表):
函数体
1.2 调用函数
1.2.1 调用内置函数
这里引用一下他人写的:内置函数
举一个例子:
# abs() 函数返回数字的绝对值。
import math
print('abs(45)的值:',abs(45))
print('abs(-45)的值:',abs(-45))
print('abs(45+23)的值:',abs(45+23))
print('abs(math.pi)的值:',abs(math.pi))
运行结果:
abs(45)的值: 45
abs(-45)的值: 45
abs(45+23)的值: 68
abs(math.pi)的值: 3.141592653589793
1.2.2 调用自己写的函数
我们这里先写一个函数,然后再调用它:
# 计算方形面积函数
def area(width, height):
return width * height
# 调用该函数
w = 20
h = 50
print("width =", w, " height =", h, " area =", area(w, h))
运行结果:
1000
1.2.3 空函数
如果想定义一个什么事也不做的空函数,可以用pass
语句:
def nop():
pass
实际上pass
可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass
,让代码能运行起来。
1.3 函数的参数
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。
1.3.1 位置参数
我们先写一个计算x的n次方的函数:
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
对于power(x, n)
函数,参数x
和n
就是位置参数。
# 调用power函数的时候我们必须要按照顺序传递x和n两个参数
a = power(5, 3)
print(a)
运行结果:
125
1.3.2 默认参数
我们可能经常使用的是计算x的平方,偶尔使用x的n次方。这时我们就需要使用默认参数了:
# 这样如果我们不传n的话,n的默认值就是2,也就是计算x的平方值。
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
我们来测试一下:
a = power(5)
print(a)
b = power(5, 3)
print(b)
运行结果:
25
125
1.3.3 不定长参数
加了星号 *
的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
def printinfo(arg1, *vartuple):
"""打印任何传入的参数"""
print("输出: ")
print(arg1)
print(vartuple)
# 调用printinfo 函数
printinfo(70, 60, 50)
运行结果:
输出:
70
(60, 50)
加了两个星号 **
的参数会以字典的形式导入。
def printinfo(arg1, \*\*vardict):
"""打印任何传入的参数"""
print("输出: ")
print(arg1)
print(vardict)
# 调用printinfo 函数
printinfo(1, a=2, b=3)
运行结果:
输出:
1
{'a': 2, 'b': 3}
1.4 匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
运行结果:
相加后的值为 : 30
相加后的值为 : 40
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。