zoukankan      html  css  js  c++  java
  • 函数的初识

    #函数定义
    def mylen():      #def 关键字,定义函数, 空格 函数名(变量)
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        print(length)
    #函数调用  
    mylen()

    函数是以功能为导向,函数内部尽量不要有print

    return:

    1.结束

    def my_len():
        print(1111)
        print(222)
        return
        print(333)
    my_len()
    #输出:      1111
                222
    #遇到return,此函数结束,不在向下执行

    2.return返回值

      ①不写return 返回 None
      ②return None 返回 None
      ③return 单个值 返回此单个值
      ④return 多个值 将多个值包在元组中,返回给调用者此元组


    def
    my_len(): l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] count = 0 for i in l1: count += 1 return count #返回单个值,count ret = my_len() #然后调用 赋值到ret上 print(ret) #输出:9
    def my_len():
        l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
        count = 0
        for i in l1:
            count += 1
        return 1,2,[123,2]      #多个值包在元组中
    ret1,ret2,ret3 = my_len()    # (1,2,[123,2]),元组给单个变量分别赋值
    print(ret1,ret2,ret3)
    #输出:1 2 [123, 2]

    参数:

    l1=[1,2,3,4,5,6,7]
    def my_len(x):  #形参:形式参数
        count = 0
        for i in x:
            count += 1
        return count
    ret = my_len(l1)  # 实参:实际参数
    print(ret)

    传参

    1.从实参的角度:
      ①按位置传参

    
    
    def max(x,y):  
    z = x if x > y else y
    return z
    ret = max(100,200) #按位置:x对应100,y对应200
    print(ret)
    #参数必须一一对应

      ②按关键字传参

    def func(x,y):
        z = x if x > y else y
        return z
    s = func(y = 2,x = 3) #关键字传参
    print(s)

      ③混合传参 关键字参数永远在位置参数后面

    def func(x,y):
        z = x if x > y else y
        return z
    s = func(2,y= 3) #混合传参,关键字参数永远在位置参数后面
    print(s)

    2. 从形参角度:

         ①位置参数

         ②默认参数

    def func(name,sex=''):     #sex默认的值是“男”
        with open('name_list','a',encoding='utf-8') as f1:
            f1.write('{}  {}
    '.format(name,sex))
    while True:
        name = input('请输入名字:')
        if '' in name:
            sex = input('请输入性别:')
            func(name,sex) #  混合
        else:
            func(name)

      ③动态参数

    *  

    def func(*args):
        print(args,type(args))
    func(1,2,'alex',3,4,5,6,8,4,7,2)
    #输出:(1, 2, 'alex', 3, 4, 5, 6, 8, 4, 7, 2) <class 'tuple'>
    #按位置,接收所有,输出元组
    ----------------------------
    def func(a,b,c,*args):
    print(a)
    print(b)
    print(c)
    print(args)
    func(1,2,'alex',3,4,5,6,7,8)
    #输出:

      1
      2
      alex
      (3, 4, 5, 6, 7, 8)    *args接收剩余所有,以元组形式

     

    **

    def func(a,b,**kwargs):
        print(a)
        print(b)
        print(kwargs,type(kwargs))
    func(a=1,b=2,c=3,d=4,e=5)
    #输出:      1
                2
               {'c': 3, 'd': 4, 'e': 5} <class 'dict'>
    #接收所有按关键字传的参数,然后以字典形式表现出来

    万能参数:

    def func2(*args,**kwargs):
        print(args)
        print(kwargs)
    func2(1,2,3,5,name='alex',age=56)
    #输出:   (1, 2, 3, 5)
    #            {'name': 'alex', 'age': 56}
    #接收所有参数  按位置 以元组展现, 按关键字  以字典形式展现
            

    魔法运算:

     ①*

    def func(*args):
        print(args)
    s = "12345"
    #输出:('1', '2', '3', '4', '5')
    ------------------------------------
    def func2(*args):
        print(args)
    l1 = [1,2,3,]
    l2 = [1,2,3,2,3,100,2]
    func2(*l2,*l1)
    #输出:(1, 2, 3, 2, 3, 100, 2, 1, 2, 3)
    #加*  打散,加入新的元组里,两个列表写在一起,就把所有的放在一个元组里

    ②**

    def func3(**kwargs):
        print(kwargs)
    dic = {'name1':'alex','age1':12}
    dic2 = {'name2':'jin','age2':22}
    func3(**dic,**dic2,name3 = 'wusir')
    #输出:{'name1': 'alex', 'age1': 12, 'name2': 'jin', 'age2': 22, 'name3': 'wusir'}
    #把所有字典以键值对的形式打散,加入到一个字典

     形参的接收顺序:

    位置参数、*args、默认、**kwargs

  • 相关阅读:
    实例属性 类属性 实例域 类域
    研究数据集
    static 静态域 类域 静态方法 工厂方法 he use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class 非访问修饰符
    accessor mothod mutator mothod 更改器方法 访问器方法 类的方法可以访问类的任何一个对象的私有域!
    上钻 下钻 切片 转轴 降采样
    识别会话
    Performance Tuning Using Linux Process Management Commands
    Secure Hash Algorithm 3
    grouped differently across partitions
    spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset
  • 原文地址:https://www.cnblogs.com/pygg/p/8393884.html
Copyright © 2011-2022 走看看