Python函数
Python版本 3.6.5 linux下命令[python]查看
1、调用函数:Python内置了很多函数
(1)、求绝对值:abs()
代码:
print(abs(-100))
打印:
100
(2)、求最大值:max()
代码:
print(max(1,2,4,-1))
打印:
4
(3)、数据类型转换
代码:
>>>str(123)
'123'
>>>float('12.34')
12.34
>>>int('789')
789
(4)、给函数取别名
代码:
a = abs #把函数abs赋值给变量a
print(a(-111))
打印:
111
2、定义函数:关键字 def
(1)、写一个名为 a.py 的python文件,写一个名为test的方法
代码为
def test(x):
if x>9 :
return print('输入的值大于9')
else :
return print('输入的值小于9')
test(99) #执行函数
打印:
输入的值大于9
如何在该文件同一目录下的其他.py文件中引用该方法:
用from a import test 来导入 test()函数,注意 a 是文件名(不含.py扩展名)
(2)、空函数:
代码:
def emptyMethod():
pass
解释:
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
pass还可以放在其他语句里
name = 'liSi'
if name == 'zhangSan':
pass
如果没有pass,代码就会报错
(3)、参数检查:调用函数时,如果参数个数或者类型不对,Python会抛出TypeError异常
(4)、返回多个值:
1)、给出正方形的边长,求周长和面积
代码:
def test(x):
length = x * 4
area = x * x
return length,area
x,y = test(3);
print(x,y)
z = test(3)
print(z)
打印:
12 9
(12, 9)
解释:我们用1个变量接收时返回的是一个tuple(元组),python的函数返回多值其实就是返回一个tuple
3、函数的参数
(1)、位置参数:写死了的参数,参数类型,数量不能改变
例:
def test(x,y):
z = x + y
return z
(2)、默认参数:有的时候,你希望方法里面要用到的变量自己不传,那么就可以参数一个默认值
例:
def test(name = 'zhangSan'):
print(name)
解释:如果该函数不传参数,就会打印出 zhangSan;传了参数的话就打印传入的参数
(3)、可变参数:传的参数类型为list或者tuple,数组中可传入0个或多个元素
例:
def test(*num):
sum = 0
for x in num:
sum = sum + x
return sum
(4)、关键字参数:关键字参数在函数内部自动组装成一个 dict
例:
代码:
def cat(name, age, **test): #可以只传前2个必选参数
print('name:',name,'age:',age,'others:',test)
cat('小白', 4, hobby='play') #调用该方法
dictOthers = {'hobby':'singer', 'height':23} #调用该方法
cat('小红', 3, hobby1 = dictOthers['hobby'], height1 = dictOthers['height'] )
others = {'hoddy':'eat','friend':'小猫'}
cat('小花', 2, **others) #调用该方法
打印:
name: 小白 age: 4 others: {'hobby': 'play'}
name: 小红 age: 3 others: {'hobby1': 'singer', 'height1': 23}
name: 小花 age: 2 others: {'hoddy': 'eat', 'friend': '小猫'}
(5)、命名关键字参数:如果要限制关键字参数的名字,就可以用命名关键字参数
1)、例如:只接收hobby和height作为关键字参数
代码:
def cat(name, age, *, hobby, height): #hobby,height这2个参数必传
print(name,age,hobby,height)
cat('小白', 4, hobby='play', height=1.78) #调用该方法
打印:
小白 4 play 1.78
2)、命名关键字有默认值
代码:
def cat(name, age, *, hobby='eat', height): #可以只传前2个必选参数
print(name,age,hobby,height)
cat('小白', 4, height=1.78) #调用该方法
打印:
小白 4 eat 1.78
解释:
由于命名关键字参数hobby具有默认值,调用时,可不传入hobby参数:
(6)、参数组合:在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
代码:
def f1(a, b, c=0, *, hobby, **kw ):
print('a =', a, 'b =', b, 'c =', c, 'hobby=',hobby,'kw =', kw)
f1(1, 2, hobby='code', x=99, y=100 )
打印:
a = 1 b = 2 c = 0 hobby= code kw = {'x': 99, 'y': 100}
4、递归函数:在一个函数内部调用自己本身。使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
案例:输入一个正整数,打印出斐波拉契数列 0、1、1、2、3、5、8、13、21......
代码:
x = int ( input ("输入一个正整数:") )
def fibonacci ( n ) :
if n == 0 :
return 0
elif n == 1 :
return 1
else :
return fibonacci( n - 1 ) + fibonacci( n - 2 )
for i in range ( 0 , x ) :
print(fibonacci(i))
输入:
5
打印:
输入一个正整数:5
0
1
1
2
3