函数要先定义,再调用!
一、函数参数的类型:
1. 形式参数和实际参数:
def funct_name(arguments):
codes…
codes…
funct_name(real arguments)
def funct_name(a,b): # 定义函数,设置两个参数a、b,用来接收数据 """This function calculates a+b. 两数求和函数""" # 函数说明文档位置
result = a + b
print(result)
funct_name(520,1314) # 对a、b分别赋值520,1314,并调用函数help(funct_name) # 显示函数说明文档
No.001,name:Zhangsan,age:28.
Process finished with exit code 0
## 3. 关键字参数
以键-值的方式传入实际参数值,无关乎先后顺序
def funct_name(number,name,age):
print(f’No.{number},name:{name},age:{age}.’)
funct_name(age=28,number=’001′,name=’Zhangsan’)
No.001,name:Zhangsan,age:28.
Process finished with exit code 0
## 4. 缺省参数
指定参数的默认值,作为实际参数传入函数。若有位置参数,其必须在默认参数的前面,否则报错。
def funct_name(name,age,gender='Male'):
codes...
funct_name('Zhangsan',28)
funct_name('Lily',20,gender='Female')
## 5. 收集参数
def funct_name(*args): # 接收任意数量参数,返回一个元组
print(args)
funct_name(‘WTF’,9527)
(‘WTF’, 9527) # 返回的结果是元组
def funct_name(**kwargs): # 接收键值对,返回一个字典
print(kwargs)
funct_name(地点=’WW’,人物=’老妖婆’,事件=’流窜’)
{‘地点’: ‘WW’, ‘人物’: ‘老妖婆’, ‘事件’: ‘流窜’}
二、函数返回值:return
def funct_name(a,b):
return a+b
遇到return,程序就会返回return后面的值或表达式,然后退出函数
三、函数递归
就是函数自己调用自己,但必须要有出口,否则成了无限循环。
“””计算1-100的累加结果”””
def funct_name(a):
if a == 100:
return 100 # 设置退出的出口
outcome = a + funct_name(a+1)
return outcome
result = funct_name(1)
print(result)
四、lambda表达式
函数只有一个返回值,且只有一句代码,就可以用lambda表达式简写。
## 1. lambda语法
lambda 形参: 表达式 # 形参可以省略,可以接收多个实参,但 **返回的只有一个表达式的值**
![python入门基础知识六(函数)](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2857582-20220805111718425-1694082846.png)
## 2. 带条件语句的lambda表达式
def funct_name(a,b):
return a if a > b else b
print(funct_name(1,2))
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
print((lambda a,b:a if a > b else b)(1,2))
## 3. 列表中字典数据的排序
list_name1 =[ {‘name’:’Zulu’,’age’:47},{‘name’:’Alpha’,’age’:38},{‘name’:’Dracula’,’age’:400} ]
list_name1.sort(key=lambda x:x[‘name’], reverse=False)
print(list_name1)
list_name2 = [ { ‘name’:’孙兴华’,’age’:20 } , {‘name’:’赵丽颖’,’age’:33 } , {‘name’:’李小龙’,’age’:80 } ]
list_name2.sort(key=lambda x:x[‘name’], reverse=False)
print(list_name2)
8
8
第二个函数设置了三个参数,然后将a,b作为c的参数,最后在给出实际参数时,将c的值赋为绝对值函数abs。
## 1. filter(函数名,迭代对象)
筛选序列中符合条件的元素
a = list(range(1,11))
def funct_name1(x):
return x%2 == 0 # 将除2余数为零的数返回出来
outcome = filter(funct_name1,a)
print(outcome) # 打印的是对象的内存地址
print(list(outcome))
[1, 4, 9, 16]
[1, 4, 9, 16]
## 3. reduce(函数名(x,y),迭代对象)
**函数中必须有2个参数**,每次的计算结果继续和序列的下一个元素做累加计算
import functools # 导入模块
a = list(range(1,101))
def funct_name(a,b):
return a + b # 计算加和
outcome = functools.reduce(funct_name,a) # 引入reduce函数后,将函数的每次计算结果和序列的下一元素做累加
print(outcome)
print(functools.reduce((lambda x,y : x + y),(range(1,101)))) # 简略写法
Original: https://www.cnblogs.com/randyszone/p/16547807.html
Author: randy198
Title: python入门基础知识六(函数)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583074/
转载文章受原作者版权保护。转载请注明原作者出处!