记录我的 python 学习历程-Day09 函数 / 返回值 / 参数

函数初识

  • 函数:
    • 内置函数:python 自带的一些功能,直接调用就可以,比如 len()。
    • 自定议函数:需要我们自己定义一段代功能性代码,方便调用。
  • 函数的优点:
    • 减少代码重复性。
    • 增强了代码可读性。

函数的结构与调用

  • 结构

    def 函数名():
        函数体
    

    这就 是函数的结构

    def :关键字,表示我要定义函数了。

    函数名:与变量的命名规则相同,要具有可描述性。

    函数体:缩进,这里面是你这个函数要完成的功能的具体代码,也是你定义这个含数的意义。

  • 调用

  • s = 'fdsfjldsajfklsajflas'
    
    
    def my_len(s):	# 定义一个函数
        cont = 0
        def_li = []
        for i in s:
            cont += 1
        print(cont) 
    
    
    my_len(s)	# 调用函数
    

    使用函数名加小括号来调用函数,只有解释器读到函数名()时,才会执行此函数,如果没有这条指令,函数里面有再多的代码也不会执行。并且:这个指令你写几次,函数里的代码就运行几次。

函数的返回值

  • 遇到return,函数结束,return下面的(函数内)的代码不会执行。

  • return 会给函数的执行者返回值。

    • 如果return后面什么都不写,或者函数中没有return,则返回的结果是None
    • 如果return后面写了一个值,返回给调用者这个值
    • 如果return后面写了多个结果,,返回给调用者一个tuple(元组),调用者可以直接使用元组的解构获取多个变量。
    s = 'fdsfjldsajfklsajflas'
    
    
    def my_len(s):
        cont = 0
        def_li = []
        for i in s:
            cont += 1
        return cont	# 返回值
    
    
    my_len(s)
    print(my_len(s))
    

函数的参数

  • 函数的传参

    • 形参(定义函数时设置的参数)

      写在函数声明的位置的变量叫形参,形式上的一个完整,表示这个函数需要 XXX

    • 实参(调用函数时填入的参数)

      在函数调用的时候给函数传递的值,实际执行的时候给函数传递的信息,表示给函数 XXX

    函数的传参就是函数将实际参数交给形式参数的过程

    def date(sex):  # 函数定义时(参数) 这个就是形参
        print("拿出手机")
        print("打开陌陌")
        print('设置筛选条件:性别: %s' %sex)
        print("找个漂亮的妹子")
        print("问她,约不约啊!")
        print("ok 走起")
    
    date('女')  # 函数执行时(参数) 这个就是实参
    # 这个过程就是:代码运行到date('女')开始执行此函数同时将字符串'女'这个数据传递给变量sex,然后执行函数中的代 # 码。如果遇到sex,其实就是使用'女'这个数据。
    
  • 实参角度

    • 位置参数(调用函数的时候,填入的参数)

      位置参数就是从左至右,实参与形参一一对应。

      def date(sex, age, hobby):
          print("拿出手机")
          print("打开陌陌")
          print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
          print("找个漂亮的妹子")
          print("问她,约不约啊!")
          print("ok 走起")
      date('女','25~30','唱歌')
      
      • 练习

        编写函数,给函数传递两个参数a,b a,b相加 返回a参数和b参数相加的和

      def f(a,b):
          c = a+b
          return c
      
      num_sum = f(5,8)
      print(num_sum)
      结果: 13
      

      ​ 编写函数,给函数传递两个参数a,b 比较a,b的大小 返回a,b中最大的那个数

      def f(a,b):
          if a>b:
              return a
          else:
              return b
          
      num_sum = f(5,8)
      print(num_sum)
      
      结果:8
      

      ​ 比较大小的这个写法有点麻烦,我们在这里学一个三元运算符

      def f(a,b):
          c = a if a > b else b  #当a>b就把a赋值给c,否则就把b赋值给c
          return c
      
      msg = f(5,7)
      print(msg)
      
      结果:7
      
    • 关键字参数

      可以不管位置,但必须一一对应

      def date(sex, age, hobby):
          print("拿出手机")
          print("打开陌陌")
          print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
          print("找个漂亮的妹子")
          print("问她,约不约啊!")
          print("ok 走起")
      date(hobby='唱歌',sex='女',age='25~30',)
      
      
      函数:传入两个字符串参数,将两个参数拼接完成后形成的结果返回。
      def func(a,b):
          return a + b
      print(func(b='Dylan',a='无敌'))
      
      
    • 混合参数

      可以把上面两种参数混合着使用. 也就是说在调用函数的时候即可以给出位置参数, 也可以指定关键字参数.

      位置参数一定要在关键字参数的前面。

      # 混合参数
      # 位置参数一定要在关键字参数的前面。
      def meet(sex,age,skill,hight,weight,):
          print('打开tantan')
          print('进行筛选:性别:%s,年龄:%s,技术:%s,身高:%s,体重%s' %(sex,age,skill,hight,weight))
          print('左滑一下')
          print('右滑一下')
          print('找美女')
          print('悄悄话....')
          print('约....走起...')
          return '筛选结果:性别:%s,体重%s' %(sex,weight)
      
      print(meet('女',25,weight=100,hight=174,skill='python技术好的'))
      
      
    • 综上: 在实参的⾓角度来看参数分为三种:

      1. 位置参数,必须要一一对应,从左至右,位置不能错
      2. 关键字参数,必须一一对庆,位置可以调整
      3. 混合参数,位置参数必须在关键字参数前面
      
      
  • 形参角度(定义含数的时候设置的参数)

    • 位置参数

      位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应

      def date(sex, age, hobby):
          print("拿出手机")
          print("打开陌陌")
          print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
          print("找个漂亮的妹子")
          print("问她,约不约啊!")
          print("ok 走起")
      date('女','25~30','唱歌')
      
      
      写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
      # low 版:
      def func(l):
          if len(l) > 2:
              return l[:2]
          else:
              return l
      # print(func([1,2,3,4,5]))
      print(func([1,]))
      
      # 三元运算符版:
      def func(l):
          c = l[:2] if len(l) > 2 else l
          return c
      print(func([1,2,3,4,5]))
      print(func([1,]))
      
      def func(l):
          return l[:2]
      # l1 = [1,]
      # print(l1[:2])
      
      
    • 默认参数

      默认参数设置的意义:普遍经常使用的。

      def stu_info(name, age, sex='男'):   
          print("录入学生信息")
          print(name, age, sex)   
          print("录入完毕")
      
      
      stu_info("张强", 18)
      
      

      注意:必须先声明在位置参数,才能声明关键字参数

    • 综上:在形参的角度来看

      位置参数
      默认认值参数(大多数传进来的参数都是一样的, 一般用默认参数)
      
      
posted @ 2019-12-25 12:11  Dylan_Yu  阅读(146)  评论(0编辑  收藏  举报