目录
函数
- 函数基本概念
- 函数四大参数
变量作用域
- 全局变量
- 局部变量
一、函数
(一)函数基本概念
1.初识函数
函数本质就是一项功能。
函数分为内置函数和自定义函数。
其中,内置函数是系统早就封装好的。例如:
print() #print函数:功能是输出
round() #round函数:功能是保留小数点位数,并四舍五入
例1:
将1.12386
保留小数点后两位,并四舍五入?
写法1:
a = 1.12386
pring(round(a,2))-->1.12 #函数里面嵌套函数 #两级还可以接受,再多就不建议了
写法2:
a = 1.12386
result = round(a,2) #将函数结果保存在一个变量中
pring(result)-->1.12
例2:
将1.12386
保留小数点后三位,并四舍五入?
a = 1.12386
result = round(a,3)
pring(result)-->1.124 #四舍五入了
(1)快速了解某个内置函数的功能和作用
用help()函数查看
-->python #在windows命令行中,打开python命令行的方法:
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
-->help(round) #用heip()函数查看内置函数round的用法
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
-->import this #查看python之禅
Simple is better than complex.
Now is better than never.
Although never is often better than *right* now.
以上操作,也可以直接打开python软件的IDLE进行查看。
(2)函数的特性
- 功能性
函数因功能而生,例如round()函数及其功能 隐藏细节
无论函数内部实现如何复杂,给你使用时就是很简单:传两个参数、给个说明OK。
例外:- 学习优秀的源代码,要看细节实现
- 公司前任留下的bug函数,也要看细节实现
- 避免编写重复的代码
函数内部实现的细节不用重复写
2.定义函数的基本结构
(1)基本结构
def funcname(parameter_list): #不要忘记最后的冒号
past #函数体(代码块)
函数结构的特点:
- 参数列表可以没有
- 函数体里可以用return关键字,来返回函数的结果value.
如果没有return关键字,python默认为你返回的是None空值
例题:
编写一个函数,以实现两个数字相加?并且打印输入的参数?
def add(x,y):
result = x + y
return result
def print(code): #自定义的函数名,不能与内置函数或变量的名称相同
print(code) #因为这是自己调用自己
add(1,2) #调用自定义函数add(),其实此时已经计算出了a = 3,但是你没让打印啊
print('python')
-->
error❌
maximum recursion depth exceeded #超过了递归的最大深度
改正后:
def add(x,y):
result = x + y
return result
def print_code(code):
print(code)
a = add(1,2) #执行流程,从上到下 #虽然计算出了a = 3,但没有打印
b = print_code('Python') # print_code()函数内部有打印,此时打印出Python
print(a,b) #传入了两个自定义函数作为参数
-->
Python
3 None #⭐因为print_code()函数体中没有return,所以默认返回None
(2)return的补充说明
return的三种情况
- return value
- 没有return
- 只有return:函数运行在此终止,后面的语句就不执行了
即:
def print_code(code):
print(code)
return # 只有return,下面的语句是不执行的
print(code)
print(code)
print(code)
例题:
探讨return函数如何返回两个值?
(1)模仿游戏中释放技能,R:skill1 、skill2,计算对某一boss的最终伤害?
def damage(skill1,skill2):
damage1 = skill1 * 3
damage2 = skill2 * 2 + 10
return damage1,damage2 #这就能返回两个值
damages = damage(3,6) #传入分别为3、6的初始伤害
print(type(damages))
-->
tuple #默认给编为元组的类型
(2)如何使用tuple元组这个结果?
写法1 :
def damage(skill1,skill2):
damage1 = skill1 * 3
damage2 = skill2 * 2 + 10
return damage1,damage2
damages = damage(3,6)
print(damages[0],damages[1]) #序列索引:虽结果正确,但是依靠此方式访问变量结果,非常不好 #几个月后会完全不记得
-->
9,22
写法2:
def damage(skill1,skill2):
damage1 = skill1 * 3
damage2 = skill2 * 2 + 10
return damage1,damage2
skill1_damage,skill2_damage = damage(3,6) #序列解包:用两个变量来接受函数返回的两个结果。易于维护
print(skill1_damage,skill2_damage)
-->
9,22
小结:多结果函数的写法:推荐用序列解包
3.序列解包
- 如何对三个变量分别赋值?
a = 1
b = 2
c = 3 #三行
a,b,c = 1,2,3 #一行:该格式既简洁,又没有损失太多的可读性
- 能否一个变量接受三个数值?
d = 1,2,3
print(type(d))-->tuple #接受的三个数值,自动编为元组类型
序列解包:
unpack
就是将上面的过程反过来
d = 1,2,3
a,b,c = d #元素个数要相等
补充:
a = 1
b = 1
c = 1
a,b,c = 1,1,1
如果上面所赋的值都一样的话,还可以这么简化:
a,b,c = 1
print(a,b,c)-->1,1,1,
Comments | NOTHING