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


    函数的初识

    • 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

  • 相关阅读:
    @bzoj
    @bzoj
    @codeforces
    @codeforces
    @bzoj
    @codeforces
    @codeforces
    @codeforces
    @NOIP2018
    反转字符串--C和Python
  • 原文地址:https://www.cnblogs.com/wby-110/p/12528240.html
Copyright © 2020-2023  润新知