当前位置: 移动技术网 > IT编程>脚本编程>Python > python基础学习day9:函数的初识

python基础学习day9:函数的初识

2020年03月20日  | 移动技术网IT编程  | 我要评论

天佑被禁播,小骆驼蓝迪,联通号码查询

函数的初识

  • why:以功能(完成一件事:输入密码、登录、注册、获取长度等)为导向。 一个函数只能封装一个主要功能。具有减少重复代码,可读性高等优点。(可类比len函数)
  • when:函数可以随时调用
#假设python没有len函数,请你用代码算出给定任意字符串、列表等的长度,务必请自己编写一下,参考如下:

s1 = 'asdfghjkl'
len = 0
for i in s1:    #当要遍历一个可迭代对象时经常用for
    len += 1
print(len)   #9


len = 0
l1 = [1,2,3,4,5,6,7]
for i in l1:
    len += 1
print(len)    #7

​ 这样写,重复代码太多且代码的可读性差

  • 对上放代码进行改进,定义一个函数:

    def my_len(s):
        len = 0
        for i in s:
            len += 1
        print(len)
    
    
    #测字符串/列表的长度:
    s1 = 'asdfghjkl'
    my_len(s1)         #9
    l1 = [1,2,3,4,5,6,7]
    my_len(l1)         #7
  • how:函数以def定义后再加一个空格再加上函数名(取的函数名最好具有描述性)再加上一个英文冒号,示例如下:

    def hanshu():  #def 函数名():
        pass       #    函数主题
        return 返回值           #    return    返回值,可有可无
    • 函数名与变量设置相同,一般以驼峰命名法(hanshu、hanshu、hanshu),函数名后一定要加()和:
    • 函数体中最好不要写print(),函数体向前缩进一个tab
    • 当编写的代码中包含 函数名() 后,函数会被执行。
    • 函数的返回值return: 在函数中遇到return直接结束函数的调用;并给函数外部返回一个返回值,将数据返回给函数的执行者、调用者。返回值可被print打印出,若无返回值,print会打印出none。
    • return可返回多个值,会以元祖的形式将多个元素返回给函数的执行者。(元祖可以进行拆包)
  • 函数的传参:让函数封装的这个功能变为动态可传入的(盘活)。参数分为实参和形参

    • 实参:函数的执行时传入的参数

    • 形参:函数的定义时接受的参数

      def func(a):  #a:形参,定义函数时定义的参数,若定义了形参,则调用函数时必须向函数传入                实参。(特殊情况后文再说)
          a += 1
          return a
      print(func(6))   #调用函数  6:传入的实参。
      >>>7
    • 实参角度:

      • 位置参数:按照实参位置参数与形参的对应顺序(从左到右)依次传入。

        def func(a,b):
            c = a / b
            return c
        print(func(10,2))
        >>>5.0      #只要运算符中有除法,得出来的答案都是浮点数
      • 关键字参数:当形参过多时,需要将实参传入的顺序记住,容易出错。关键字参数无需顺序

        def func(name,sex,hight,weight):
            c = '我叫{},性别{},体重是{},身高{}'.formt(name,sex,weight,hight)
            return r
        print(func('山就在那儿','男','60kg','1.7m'))       #python默认从左至右将实参传给形参,当形参过多时容易出错,但可以使用关键字参数传入。
        >>>我叫山就在那儿,性别男,体重是1.7m,身高60kg
        
        print(func(name='山就在那儿',sex='男',weight='60kg',hight='1.7m'))  
        >>>我叫山就在那儿,性别男,体重是60kg,身高1.7m
      • 混合传参:位置参数一定要放在关键字参数前方,关键字参数一定要放在位置参数后面。否则会报错。

        def func(name,sex,hight,weight):
            c = '我叫{},性别{},体重是{},身高{}'.formt(name,sex,weight,hight)
            return r
        print(func('山就在那儿','男',weight='60kg',hight='1.7m')) 
        >>>我叫山就在那儿,性别男,体重是60kg,身高1.7m
      • 知识点补充:三元运算符:简单的if-else语句可以简化为三元运算符。

    #判断a,b的大小
    a = 10
    b = 11
    c = a if a>b else b
    print(c)    11
    
    #c = a if a>b else b  等同于:
    if a>b:
        c = a
    else:
        c = b
    #定义一个函数:能为函数传入两个参数,打印出两个参数中最大的一个参数
    def complie(a,b):
        c = a if a>b else b
        return c
    print(complie(11,10))
    >>>11
    
    #编码进阶:
    def complie(a,b):
        return a if a>b else b    #return的为c,因此可以将两个c合并,并省去参数c
    print(complie(11,10))
    • 形参角度:

      • 位置参数:形参位置参数必须与实参一一对应,与实参位置参数一样,只是观察角度不同,不再多叙述。

      • 默认参数(默认值参数):若有位置参数,默认参数一定要在位置参数后面,默认参数可以被更改。可参考open函数的默认参数。

      • 实参与形参必须一一对应,不可一对多或者多对一,否则会报错。建议读者自测一遍。

        def func(a,b,c=10):
            d = (a + b)/c
            return d
        print(func(9,1))
        >>>1
        
        print(func(5,3,c=2))
        >>>4
        print(func(5,3,2))    #实参传入默认参数时关键字可以不写,但不推荐此方法。
        >>>4
      • 还有两种形参类型,请看明天的python基础学习day10

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网