Python_面向对象_函数
一.函数含义:函数就是功能的意思 可以把一系列代码包裹在一起的 代码块 实现某个功能
好处:可反复调用 提高开发效率 便于维护管理
二.函数基本格式:
三.函数命名:
四.函数参数概念:有形参(形式参数,声明时的参数) , 实参(实际参数,调用时的参数) , 函数可以没有参数
--参数分类
形参(普通参数,默认参数,普通收集参数,命名关键字参数,关键字收集参数)
实参(普通实参,关键字实参)
五.普通收集参数: 用于专门收集普通参数的是普通收集参数
关键字收集参数:用于专门收集关键字实参的是关键字收集参数
六.命名关键字参数:在调用函数的时候,必须指定关键字实参
七.关于 * 和 ** 的实参使用
八.形参上声明的位置顺序:
普通参数 -> 默认参数 -> 收集参数 -> 命名关键字参数 -> 关键字收集参数
九.对于任意函数,都可以通过 func(*args, **kw) 来获取所有参数
十.return返回值:为这个函数返回一个结果(return返回值可有可无 按照需求选择)
注意:执行return语句之后,函数执行结束
# 99 乘法表 10行10列@ for in
listvar = [1,2,3,4,5]
for i in listvar:
print(i)
res = range(1,10)
#range 是迭代器, 迭代器 是一种 对象 ,迭代器具有可迭代性,(可迭代,可遍历,可循环)
print(res)
print(type(res))
"""
range(a,b,c)
a => start
b => end
实际上是从a开始 从b-1 结束
c => step 步长
"""
for i in range(1,11):
print(i)
print("<===>")
# 升序 一次加2
for i in range(1,11,2):
print(i)
print("<===>")
# 降序 一次减一
for i in range(10,0,-1):
print(i)
i = 1
while i<=9:
j = 1
while j<=i:
print("%d*%d=%2d "%(i,j,i*j),end="")
j+=1
print()
i+=1
print("<===>")
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%2d "%(i,j,i*j),end="")
print()
然而代码的复用性差;
# 函数含义: function 功能(即 包裹某些代码 执行某些操作 达成某些目的)
# 函数的基本格式
"""
def myfirstfunc():
code1
code2
code3
"""
# 函数的定义
def myfirstfunc():
pass
# 函数的调用
myfirstfunc()
# 函数的命名:
"""
函数的命名
字母数字下划线 首字符不能为数字
严格区分大小写 且不能使用关键字
变量名要有意义 且不能使用中文哦
"""
# 函数的意义
"""
1.他可以提高代码的复用性,方便代码移植管理
2.提高代码效率
"""
def my_99chengfabiao():
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%2d "%(i,j,i*j),end="")
print()
my_99chengfabiao()
# 带普通参数的函数 hang lie 这两个变量是形参
def my_canshu_quanquan(hang,lie):
i=0
while i<hang:
j = 0
while j<lie:
print("@",end="")
j+=1
print()
i+=1
# 函数的形参和实参的个数要一一对应
# 默认参数
def my_canshu_quanquan(hang=5,lie=8):
i=0
while i<hang:
j = 0
while j<lie:
print("@",end="")
j+=1
print()
i+=1
my_canshu_quanquan(12)
"""
默认参数要注意顺序
语法:默认参数一定放在普通参数的后面
"""
def ceshi01(b,a=9):
print(a)
print(b)
ceshi01(11)
"""
#菱形小星星:
*
***
*****
*******
*********
"""
s k
i=1 1 0
i=2 3 1
i=3 5 2
i=4 7 3
i=5 9 4
最大数 max_star h = max_star//2 +1
star 规律 star = 2*i-1
空格 规律 k = h-i
# 参数要求是星星的最大个数
# hanshu(99)
def dayin(max):
i = 1
h = max//2+1
while i<h :
k = h-i
print(k*" ",end="")
star = 2*i-1
print(star*"*",end="")
print()
i += 1
# 关键字实参
def wangzherongyao(wugong="碎星锤",fazhang="噬神之书",fapao="魔力斗篷",xie="抵抗之靴"):
print(wugong)
print(fazhang)
print(fapao)
print(xie)
# wangzherongyao("大力锤","大力杖","大力鹏","大力鞋")
# wangzherongyao("小李鞋","小李鹏","小李锤","小李杖")
"""
关键字实参: 顺序允许随机,但是键名必须正确
"""
wangzherongyao(xie="小李鞋",fapao="小李鹏",wugong="小李锤",fazhang="小李杖")
# 普通收集参数 : 用于收集多余的普通参数(语法:*args args这个变量前面加* 代表普通收集参数)
def jiaqilai(a,b,c,*args):
res = a+b+c
for i in args:
res += i
print(res)
jiaqilai(1,2,3,4,5,6,88,99,100)
# 关键字收集参数 : 用来接收多余的关键字实参
# 案例一
"""
def zifuchuan(a="今",b="天",c="好",d="晴朗"):
res = a+b+c+d
print(res)
zifuchuan()
zifuchuan(a="我爱",b="你",c="亲爱的",d="姑娘")
"""
# 案例二 : 实现 我接下来 心慌的歌词
def zifuchuan(a="今",b="天",c="好",d="晴朗",**kwargs):
res = a+b+c+d
for i in kwargs.values():
res += i
print(res)
zifuchuan(a="我爱",b="你",c = "亲爱滴",d="菇凉 ",wodegeci="见到你,我就心慌",acc="abc")
# 命名关键字参数:* 后面的参数 即是命名关键字参数,
# 意味着 调用函数时,必须以关键字实参的形式赋值
def ceshi002(a,b,c):
print(a)
print(b)
print(c)
ceshi002(1,2,3)
def ceshi002(a,b,*,c):
print(a)
print(b)
print(c)
ceshi002(1,2,c=3)
print("<==>")
listvar = [13,17]
# *listvar 实际上是把列表里面的值
# 一一拿出来放到参数列表里面 进行参数传递
ceshi002(*listvar,c=3)
# ceshi002(1,2,c=3)
print("<===>")
def ceshi002(a,b,*,c,d):
print(a)
print(b)
print(c)
print(d)
# **dictvar 相当于c=15,d=16 作为参数
# 放到参数列表中进行传递
dictvar = {"cc":15,"d":16}
# ceshi002(1,2,**dictvar)
# ceshi002(1,2,d=16,c=15)
ceshi002(d=16,1,2,c=15)
# return 函数的返回值 返回值的类型 支持六大基本标准类型 也支持返回函数等
def ceshi01():
print()
# return 1
# return "nihao"
# return [1,2,3]
return (4,5,6)
res = ceshi01()
# print(res)
"""
当函数运行到return 的时候 会将值弹出到调用的位置上面去 到此 函数结束 不在往下运行代码;
"""
def ceshi02():
# return 1
# return "nihao"
# return [1,2,3]
return (4,5,6)
res = ceshi02()
# print(res)
ceshi02()
# 简单的计算器
def jisuanqi(sign,n):
res = 0
if sign == "+":
res = n+n
elif sign == "-":
res = n-n
elif sign == "*":
res = n ** n
elif sign == "/":
res = n/n
else:
print("外星球了解一下?")
return res
res = jisuanqi("+",5)
res = jisuanqi("-",5)
res = jisuanqi("*",5)
res = jisuanqi("/",5)
print(res)

浙公网安备 33010602011771号