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

  • 相关阅读:
    ret向外层返回
    8259A编程
    printf输出格式
    orange's习题——分页机制【第3章】
    关于“数据段向低扩展”——遇到一篇很佩服的帖子
    揭开硬件中断请求IRQ所有秘密(图解)
    虚拟地址空间达64TB是怎么算来的
    orange's习题——分段机制【第3章】
    进入内层时的堆栈切换
    枚举
  • 原文地址:https://www.cnblogs.com/pygg/p/8393884.html
Copyright © 2011-2022 走看看