python基础入门之函数定义

本文最后更新于:December 21, 2020 am

1. python函数的基本定义

A. 基本格式

def 函数名 括号 参数 冒号

B. 实现代码和测试用例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/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占位符 让程序可以正常进行

2. 函数参数

除了正常使用的位置参数(必选参数)外,还可以使用默认参数,可变参数和关键字参数

实现代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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个或多个实参

3. 递归函数

递归是指,在函数返回时,调用自己本身,并且,return语句,不能包含表达式。

实现代码如下:

1
2
3
4
5
6
7
8
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标准的解释器没有对尾递归做优化)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!