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)

 

posted @ 2018-07-28 16:32  bling_bling_star  阅读(516)  评论(0)    收藏  举报