函数的调用
1.流程控制语句2.计算机基础3.编程语言介绍4.python语言介绍5.python解释下载与安装6.python知识补充+语法入门7.基本数据类型8.基本运算符9.用户交互 输入输出方法10.字符编码11.可变与不可变数据类型12.文件操作的基本流程13.文件的基本操作14.异常处理15.深浅拷贝16.函数定义和调用
17.函数的调用
18.名称空间和作用域19.装饰器20.迭代器和三元运算符21.模块与包22.random、os、json模块23.hashlib、time模块24.正则25.datetime、sys、logging模块26.正则re模块27.常用的内置函数28.初识面向对象29.面向对象进阶30.封装、继承、多态31.常用魔法方法和元类32.网络编程初识33.网络编程进阶34.并发编程之多进程35.并发编程之多线程36.并发编程之协程函数的调用
1. 函数的调用
-
函数的三种调用方式
-
直接调用函数并获取返回值
def add(a, b): return a + b res = add(1,2) print(res) # 3
-
使用表达式调用函数
def add(a, b): return a + b res = add # res = add, res加上括号等于add() # 传入参数可以等到add()函数的返回值 print(res(1, 2))
-
函数作为参数
# 函数的返回值作为参数 def plus(num): return num + 100 def result(a,b): return a + b res = result(10,plus(10)) print(res) # 120 # 函数的内存地址作为参数,函数执行传参时,传递的是内存地址 def plus(): num = 10 return num + 100 def result(a, b): # b位置传的是另外一个函数名,函数名+()就等于调用函数,可以拿到函数的返回值 return a + b() res = result(10, plus) print(res) # 120
-
2.函数的参数
2.1形参与实参
-
形参:在定义函数阶段时定义的参数叫形式参数,形参相当于变量名
-
实参:在调用函数阶段时传入的值称之为实际参数,相当于变量值
# x,y 是形参,x = 1,y = 2 def func(x,y): print(x,y) # 1,2是实参 func(1,2)
-
形参与实参的关系:
- 在调用阶段,实参(变量值)会绑定给形参(变量名)
- 这种关系只能在函数体中使用
- 这种关系调用时生效,调用结束接触
2.2形参和实参的使用
-
位置参数:按照从左到右的顺序依次定义的参数
-
位置形参,必须传值,多一个不行,少一个不行
-
位置实参:从左到右安转顺序依次传入值,按照顺序与形参一一对应
def func(x,y): print(x,y) func(1,2)
-
-
关键字参数
-
在调用函数时,实参可以是key=value的形式传入值,称为关键字参数,凡是按照这种形式定义的实参,可以完全不按照从左到右的顺序定义,但仍能为指定的形参赋值
# x = 1,y = 2 def func(x,y): print(x,y) # 按照顺序传 func(x = 1,y = 2) # 不按照顺序传 func(y = 2,x = 1)
-
位置和关键字混合使用
# 必须保证关键字参数在位置参数后面,且不可以对一个形参重复赋值 # 位置参数必须放在关键字参数前面 def func(x,y): print(x,y) func(1,y=2) # 不可以对一个形参重复赋值 func(1,2,x=3,y=2) # 这是错误的
-
-
默认参数
-
在定义函数阶段,就已经被赋值的形参,叫做默认参数
def register(name,age,sex='男'): print(name,age,sex) register('serein',18) # serein 18 男 register('formerly',19,'女') # formerly 19 女
-
2.3 可变长度的参数(*与**的用法)
- 可变长度值得是调用函数时,传入的值(实参)的个数不固定
- 实参时用来为形参赋值的,所以对应着,针对一处的实参必有对应的形参来接受
2.3.1可变长位置参数(*args)
# 可变长位置参数(*args)
# 【一】可变长位置参数 --- *args
# **kwargs key:word
# def index(*args):
# print(args) # (1, 2, 3)
# x, y, z = args
# print(x + y + z)
#
#
# # index(1)
# index(1, 2, 3)
# def index(*args):
# start = 0
# for i in range(len(args)):
# start += args[i]
# print(start)
#
# # 1 + 2 + 3 + 4
# # index(1)
# index(1, 2, 3)
# def index(*args):
# print(args) # (1, 2, 3)
# num_list = [1,2,3,4,5,6]
# print(*num_list)
# index(*num_list)
2.3.2 可变长关键字参数(**kwargs)
# 【二】可变长关键字参数(**kwargs)
# def index(*args):
# print(args)
# index(1,2,3)
# 可变长关键字参数 : 传实参的时候要按照关键字去传
# 传到函数内容的时候就会被 kwargs 接收成字典
# def index(**kwargs):
# user_dict = {'name': 'serein'}
# if kwargs:
# user_dict.update(kwargs)
# return user_dict
# res = index(age=18)
# print(res)
# 解包 : ** 将字典解压成键值对传到函数内部
# def index(**kwargs):
# user_dict = {'name': 'serein'}
# if kwargs:
# user_dict.update(kwargs)
# return user_dict
#
#
# user_data = {'age': 18, 'gender': '男'}
# # print(**user_data)
# res = index(**user_data)
# print(res)
# 可变长位置参数和可变长关键字参数混合使用
def register(name, age, *args, **kwargs):
user_dict = {'name': name, 'age': age}
# 如果有位置参数进来而没有变量名接收的时候就会打包成元组,放到上面的字典中
if args:
user_dict['additional_info'] = args
# 如果有关键字参数进来,就会被字典更新
if kwargs:
user_dict.update(kwargs)
return user_dict
user_dict = register("serein", 18, "handsome",'music', hobby=["music"])
print(user_dict) # {'name': 'serein', 'age': 18, 'additional_info': ('handsome', 'music'), 'hobby': ['music']}
2.3.3 命名关键字参数
def login(name, pwd, hobby, sex):
# print(f'{name}-{pwd}-{hobby}-{sex}')
# login('serein', '521', 'music', '男')
# 命名关键字参数 在函数定义形参时,
# 如果出现 * 隔断两边的形参,
# *前面的参数任意(可位置/可关键字)
# * 后面的参数必须按照关键字传参数
# def login(name,pwd,*,hobby,sex):
# print(f'{name}-{pwd}-{hobby}-{sex}')
# login('serein', '521', hobby='music', sex='男')
# def index(name='serein',age):
# ...
# 命名关键字参数也可以使用默认值
# 默认关键字参数的位置可以放在位置参数前面
def login(name, pwd, *, hobby='music', sex):
print(f'{name}-{pwd}-{hobby}-{sex}')
login('serein', '521', sex='男')
login('serein', '521', hobby='run', sex='男')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)