day10-函数基础知识
2024-08-27 07:30:04
函数
什么是函数
把工具事先准备好,然后下次使用的时候,直接使用就行了。我们的函数就是工具
为何用函数
1.遇到重复的功能只能重复编写实现代码,代码冗余
2.功能需要扩展时,需要找出所有实现该功能的地方修改,扩展性差
3.代码的组织结构不清晰,可读性差
函数使用原则
先定义,再调用。即一个函数分成两个阶段:定义阶段和调用阶段
- 定义阶段:定义函数阶段只识别语法,不运行代码
- 调用阶段:执行函数体代码
定义函数
# 语法
def 函数名(参数1,参数2,参数3,...):
"""注释:用来解释声明函数功能"""
函数体·
return 返回的值
# 可以用“函数名.__doc__()”来查看定义函数中的"""..."""
函数名
函数名类似于变量名,用来接收变量值;要具有某种意义;用字母、数字、下划线组成,不能以数字开头;且不能是关键字
定义函数的三种方式
拿比较两个数大小举例
# 第一种定义方式:无参函数.在定义函数参数时不给定参数
def sel_max():
'''定义函数'''
x, y = 10, 20
if x > y:
print(x)
else:
print(y)
sel_max() # 调用函数
# 第二种方式:有参函数,需要根据外部传进来的参数,才能执行相应的逻辑,有几个参数,就必须传入几个参数
def sel_max(x, y):
if x > y:
print(x)
else:
print(y)
sel_max(100,299)
# 第三种方式:空函数,设计代码结构。
def sel_max():
pass
sel_max()
20
调用函数
语法:函数名加括号,如 self_max()
函数返回值
def sel_max():
pass
result = sel_max()
print(result) # 无返回值
None
def sel_max():
return 'nick' # 返回一个值
result = sel_max()
print(result)
nick
def sel_max():
return 'nick',[1,2,3],20 # 返回多个值
result = sel_max()
print(result)
('nick', [1, 2, 3], 20)
1. 无返回值时,默认返回 None
2. return 1个值时,返回1个值,可以返回任意数据类型的数据
3. return 多个值时,会以元组的形式把多个值包在一起,返回一个元组
4. 函数体遇到return会终止函数,类似于while循环中的break语句
函数的参数
形参与实参
定义函数中的参数称为形参,形参具有描述意义,类似于变量名,不为具体的数据类型
调用函数中的参数称为实参,实参必须是具体分数据类型
位置参数:按从左到右的顺序定义的参数
- 位置形参:必选参数
- 位置实参:按照位置给形参传值
def compare(x,y):
if x > y:
return x
return y
print(compare(10,20))
20
关键字参数:按照key = value的形式定义的实参
- 关键字参数必须在位置实参右面
- 对同一个形参不能重复传值
- 不需要按照位置为形参传值
def compare(x=10,y=8):
if x > y:
return x
return y
print(compare()) # 在定义时给定了关键字参数,不需要再调用时赋值
print(compare(y=20)) # 实参传值时,实参传的值会覆盖形参的值
10
20
默认参数:在定义形参时为其赋值
可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
def compare(x,y=8):
if x > y:
return x
return y
print(compare(10,y=20)) # 默认形参必须在位置形参后面
20
可变长参数:指的是实参值的个数不固定
而实参有按位置和关键字两种形式定义,针对这两种形式的可变长,形参约定俗成用*args存放位置参数、用**kwargs来存放关键字参数
def self_max(*args,**kwargs):
print(args)
print(kwargs)
self_max(1,2,3,4,5,6,7,x=6,y=8,z=20,a=10,c=1000)
(1, 2, 3, 4, 5, 6, 7)
{'x': 6, 'y': 8, 'z': 20, 'a': 10, 'c': 1000}
- args接受了所有位置实参,然后以元祖的形式保存下来,只接受位置参数,不接受关键字实参
- kwarg接收所有的关键字实参,然后以字典的形式保存下来
函数对象
在python中,一切皆对象,函数也是一类对象,即函数可以当做数据传递,从而可实现函数的嵌套
def self_max(x, y): # x=1000,y=100
if x > y:
return x # 100 # 返回一个值,给函数名 # return 任意数据类型的数据
else:
return y
def max_4num(x, y, a, b):
res1 = self_max(x, y)
res2 = self_max(res1, a)
return self_max(res2, b)
res = max_4num(100,2000,2000,40000)
print(res)
40000
最新文章
- java反射案例
- JMS学习(四) Selector详解
- LeetCode Median of Two Sorted Arrays 找中位数(技巧)
- ubuntu 安装qq
- 「Poetize5」Vani和Cl2捉迷藏
- JS高级——闭包
- 通过代码...CGRectmake 创建的控件如何自适应屏幕。
- SQL语言类
- 理解Twisted与非阻塞编程
- 检查服务器是否开启GD库
- VSCode 同步设置及扩展插件 实现设备上设置统一
- Uva 10550 Combination Lock
- ASP.NET Core 2.0 : 八.图说管道
- python3之redis
- 不消失的 taskeng 黑窗口?
- C语言中的__LINE__宏
- Codeforces445B(SummerTrainingDay06-N 并查集)
- ABAP术语-Update Module
- css常用左右布局方案整理
- 设计模式入门,工厂模式,c++代码实现
热门文章
- NetCore +EFCore+SqlServer根据数据库生成实体类到项目中
- windows 2008 64位在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
- Java---15---单例设计模式:---饿汉式和懒汉式
- LeetCode 788. Rotated Digits (旋转数字)
- 第一章 Java Collections Framework总览
- idea2016的使用心得 --- 太棒了
- AngularJS2.0 一个表单例子——总体说来还是简化了1.x 使用起来比较自然
- Codeforces--14D--Two Paths(树的直径)
- bzoj 5090 组题
- JSP-Runoob:JSP 隐式对象