Python3.7学习笔记17-自定义函数 之前我们接触了很多的内置函数。函数可以极大提高工作效率
一、一般函数
函数特性
函数规则如下:
“”“
id_price_ = {
1: 180,
2: 90,
3: 100,
4: 50
}
bzf_ = True
while bzf_:
product_id = input('请输入产品id:')
if int(product_id) in id_price_:
print('产品价格:' + str(id_price_[int(product_id)]))
bzf_ = False
break
else:
print('产品不存在!请重新输入')
”“”
# 自定义函数实现的过程如下
# def 函数声明
# find_product 函数名称
# product_id 函数参数
# return 函数返回结果
# 中间的代码块称为函数主体
def find_product(product_id):
"""
查询产品价格
:param product_id:产品id
:return: 产品价格
"""
_id_price = {
1: 180,
2: 90,
3: 100,
4: 50
}
if int(product_id) in _id_price:
return _id_price[int(product_id)]
else:
return ('产品不存在!请重新输入')
print(find_product(222))
print(find_product(2))
打印结果:
产品不存在!请重新输入
90
def qt(m):
def qths():
return 333
n = m + qths()
return n
qt(111)
函数的几种参数
def demo1(cs1, cs2='不传值为默认值'):
print(cs1)
print(cs2)
demo1('参数1')
def demo2(*args, **kwargs):
"""
特殊参数演示
:param args: 不定长元组参数
:param kwargs: 关键字参数
:return:
"""
print(args,type(args))
print(kwargs,type(kwargs))
demo2('不定长参数元素1', '不定长参数元素2', key1='11', key2=22)
打印结果:
参数1
不传值为默认值
('不定长参数元素1', '不定长参数元素2')
{'key1': '11', 'key2': 22}
a = 2
c = 3
def m(x):
a = 3
y = x + a + c
return y
print(m(3),a)
b = 3
def n(z):
global b # 声明 b 的作用域为全局
b = 5 # 因为b是全局变量。当函数内b的值改变了。函数外的b的值也改变了。
q = z+b
return q
print(n(4),b)
def q():
u = 5
def r():
nonlocal u # 声明 u的作用域是整个函数
u = 6
r()
return u
print(q())
参数的传递
a = 1
b = [1,2,3,4]
def n(x,y):
x = 3
y.append(x)
return d
n(a,b)
print(a,b)
二、几种特殊的函数
闭包函数是函数嵌套的一种特殊方式。规则如下:
# 计算一个数的平方
def c(i):
def nested():
b = i ** 2
return b
return nested
递归函数
def call(n):
print(n)
if int(n/2) >0:
call(int(n/2))
else:
print('~~~~~')
print(n)
call(10)
猜猜这个结果是什么??
匿名函数
# 一般的函数和匿名函数实现相加的功能
def demo(cs1,cs2):
return cs1+cs2
sum = lambda cs1,cs2:cs1+cs2
print(demo(1,2))
print(sum(1,2))