Python函数的定义
程序员文章站
2024-02-12 15:59:40
...
函数
函数定义
#!/usr/bin/evn python3
#-*- coding:UTF-8 -*-
import math
#调用math数据包 math.pi math.sin() math.cos() math.sqrt()
def my_abs(x):
#def 函数名 括号 参数 冒号
if not isinstance(x, (int, float)): #参数类型检查
raise TypeError('bad operand type')
if x>=0:
return x,math.sqrt(x)
#返回语句,可以返回多个值,也可以不返回(默认为None)
else:
return -x,x
#返回语句中返回的是tuple类型数据
x,y=my_abs(30)
print (x,y)
x,y=my_abs(-30)
print (x,y)
def my_max(x1,x2,x3):
pass
#pass占位符 让程序可以正常进行
函数参数
注:除了正常使用的位置参数(必选参数)外,还可以使用默认参数,可变参数和关键字参数
def enroll(name,gender,age=6,city='Beijing',*number,d,**kw):
#name和gender是位置参数,实参与形参的个数和位置一致
#age和city是默认参数,可传可不传实参,默认参数的对象必须是不可变对象
#可变参数 将1个形参转化为0个或多个形参,构成1个tuple参数
#关键字参数,就是一个dic参数,里面的关键字任意
#命名关键字参数,就是dic参数,但其中的key是命名好的,只接受key作为关键字参数
print('name:',name)
print('gender:',gender)
print('age:',age)
print('city:',city)
sum=0
for n in number:
sum=sum+n*n
sum=sum+age
print(sum)
print(d)
print(kw)
number=[1,2,3,4,5]
dic={'d':11,'job':'Beijing','livingtime':8}
enroll('Lihua','F',6,'Shanghai',*number,**dic)
enroll(*number,**dic)
# × 将一个实参转化为0个或多个实参
# ×* 将一个实参转化为0个或多个实参
递归函数
#尾递归是指,在函数返回时,调用自己本身,并且,return语句,不能包含表达式。
def fact(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num ==1:
return product
return fact_iter(num-1,num*product)
print (fact(5))
#尾递归是用来解决栈溢出问题(但python标准的解释器没有对尾递归做优化)