• 初识函数 函数参数 三元运算


    1.函数的定义与调用

    定义后的函数不调用是不执行的

    函数的调用:
    函数名+() == 函数的调用

    2.函数的执行过程:

    定义 -- 调用 -- 函数体的代码
    def make():      #第一步
        print(1)        #第三步
        print(2)        #第四步
        print(3)        #第五步
        print(make)  #第六步
    
    make()             #第二步
    函数的执行过程

    返回值的

    3.函数的返回值

    没有返回值:
    1 def func():
    2     return
    3 ret = func()
    4 print(ret)  #None

    返回值写了return ,没有写内容返回的就是None

    没有写return ,返回的也是None
    return下面的代码都不执行,并且还结束了这个函数
    返回值返回给调用者。

    一个返回值:
    1 def func():
    2     return 6
    3 ret = func()
    4 print(ret,type(ret))  #6 <class 'int'>
    返回多个值:
    1 def func():
    2     return 6,6
    3 ret = func()
    4 print(ret,type(ret))  #(6, 6) <class 'tuple'>
    5 不加括号一个值就是数据结构本身,多个值就是元组;

    4.函数的参数

    形参:在函数声明的位置的变量

    实参:函数在调用时传递给形参的值

    行参:将实参传递给形参的过程

    位置参数:

    位置参数:
        def make(char,addr,sex)
           make('探探','北京','萝莉')
    位置参数
    def func(a,b,c,d=1):  # 形参 (位置+默认)混合形参
        print(a,b,c,d)
    
    func(1,2,3) # 位置参数
    
    
    
    def func(a,b,c,d=1):  # 形参 (位置+默认)混合形参
        print(a,b,c,d)
    
    func(1,2,3,d=3) # 实参 (位置+关键字)混合实参
    
    
    def func(a,b,c,d):  # 形参 (位置+默认)混合形参
        print(a,d)
    
    func(2,d=1) # 实参 (位置+关键字)混合实参
    位置参数 > 关键字参数
    View Code

    实参角度传参:

    ① 按照位置传值:位置参数

    1 def make(x,y):
    2     print(x,y)
    3 make(5,6)

    ②按照关键字传值:关键字参数

    1 def make(x,y):
    2     print(x,y)
    3 make(y= 5 , x = 2)

    ③按照位置和关键字混合用:混合传参

    def make(a,b):
        print(a,b)
    make(1,b= 2)
    # 位置参数----->关键字参数
    # 位置参数必须在关键字参数前

    形参角度传参:

    ①默认参数

    1 def make(name,sex = 'man'):
    2     print(name,sex)
    3 make('tom')
    4 
    5 
    6 def make(name,sex = 'man'):
    7     print(name,sex)
    8 make('tom','women')


    # 默认参数是个可变类型
    def defult_param(a,l = []):
        l.append(a)
        print(l)
    
    defult_param('alex')
    defult_param('egon')

    函数的参数有:形参、实参、行参、位置参数、关键词参数、默认参数,今天我们来讲讲动态参数!

    动态位置参数(*args)

    1 def func(a,b,c,*args):  # 在形参位置*叫做聚合
    2     print(a,b,c)
    3     print(args)   # 元组形式
    4 func(1,2,3,4,5,9,6,7,8)

    形参接收顺序: 位置参数---->动态位置参数---->默认参数----->动态默认参数

      View Code

     动态默认参数**kwargs)

    关键字的形式传参

     

    那么我们只输入关键字参数,下图会输出什么呢?

     最后只输出了(){‘a’:4,‘b’:5}

    View Code

    输出:

     () {'a': 4, 'b': 5}
    (1, 2, 3) {}

    View Code

    输出:(1, 2, 3) {'a': 4, 'b': 5},args和kwargs都只接受对应自己的实参。

     总结:

    1.args和 kwargs 是可以更换的,但是程序员约定都用它
      用途:在不明确接受参数,数量时使用*args和**kwargs
    2.动态位置参数 > 动态关键字参数
      形参(接收顺序): 位置 > 动态位置 > 默认参数 > 动态默认参数
      实参(接收顺序): 位置 > 关键字参数
    3.在实参调用的时候 *将可迭代的对象打散,字典是将键取出
    在形参处出现*就是在聚合
    4.在实参调用的时候 **将字典打散成 关键字参数(键=值)
    在形参处出现**就是将关键字参数聚合成一个字典




    
    

    1 dic = {'a':1,'b':8}
    2 def func(*args,**kwargs):      # 聚合 
    3     print(args,*kwargs)        # print('a','b')  字典的键
    4     print(args,kwargs)         # print('a','b')  字典
    5 func(**dic)                    #   打散

    小补充

    三元运算:

    def func(a,b):
        if a>b:
            return a
        else:
            return b
    print(func(9,8))
    条件成立的结果       条件          条件不成立的结果 c = a if a>b else b

    1 def func(a,b):
    2     return a if a>b else b
    3 print(func(10,9))
  • 相关阅读:
    Redis五种数据结构解析
    深入理解JAVA线程池
    数据看板superset在Windows环境下安装
    为什么要用docker
    非常完善的两个微服务框架比较(SpringCloud与Dubbo)
    Nginx配置之负载均衡、限流、缓存、黑名单和灰度发布
    jq
    22 道高频 JavaScript 手写面试题及答案
    input 限制 中文输入
    vue(js)点击目标div以外区域将目标div隐藏
  • 原文地址:https://www.cnblogs.com/chitangyuanlai/p/10523269.html
Copyright © 2020-2023  润新知