zoukankan      html  css  js  c++  java
  • 5.Python(函数)

    函数

    A.定义

    1.定义一个函数

    #语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    
    #函数名要能反映其意义

    2.函数返回值

    (1)函数体内部的语句执行是,一旦执行到return时,函数就执行完毕,并将结果返回。

    (2)如果没有return语句,函数执行完毕也会有返回结果,只是结果为none

    def test01():
        msg = 'test01'
        print(msg)
    
    print(test01())

    (3)return返回一个值

    def test02():
        msg = 'test02'
        return msg
    print(test02())

    (4)return返回一堆值,最后返回的是一个元组

    def test03():
        msg = 'test03'
        return 1,2,3,4,'a',['alex'],{'name':'alex'},None
    
    print(test03())

    B.函数的参数

    1.位置参数,按照从左到右的顺序定义的参数
    def calc(x, y):
        t = x**y
        return t
    res = calc(2,3)
    print(res)

    这个函数体验两个参数,都是位置参数,调用函数是,传入的两个值按照位置顺序依次赋给参数x,y

     2.默认参数
    def handle(x, type='mysql', name="haha"):
    print(x)
    print(type)
    print(name)
    handle('hello')

    注意:(1)必须在位置参数后面

                 (2)不用默认参数时,要赋新值,会覆盖掉原来的参数

                       a.按顺序依次给

    handle('hello', 'maya', 'tiana')

                       b.不想按顺序,就要把参数名写上

    handle('hello', name='tiana', type='maya')

              (3)默认参数最大的坑,最好不要把默认参数设置成一个列表,最好是不变对象如str,none

    3.可变参数 参数名前面加一个“*”

    传入的参数个数不确定,随便多少个都行,下面的例子参数是1,2,3  也可以是别的,个数没有限制

    def calc(*numbers):  #计算a*2 + b*2 + c*2 + ……
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    print(calc(1, 2, 3))  

    函数内部,参数numbers接收到的是一个元组

    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    nums = (1, 2, 3, 4, 5,)
    t = calc(*nums)
    print(t)

    *nums表示把nums这个元组中的所有元素作为可变参数传进去,这种写法相当有用,而且常见

    可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。

    4.关键字参数

    函数person(),前两个参数是必选参数(位置参数),最后一个是关键词参数kw,起扩展函数的功能

    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'other:', kw)
    person("Mike",30, city='Beijing')

     (1)情况一

    def foo(x, y, **kwargs):
        print(x, y)
        print(kwargs)
        
        
    foo(1, y=2, a=1, b=2, c=3)

    (2)情况二

    def foo(x, y, **kwargs):
        print(x, y)
        print(kwargs)
    
    
    dic = {'a': 1, 'b': 2, 'c': 3}
    foo(1, y=2, **dic)

    **dic表示把dic这个字典的所有key-value值用关键字参数传入到函数的**kwarge参数

    5.命名关键字参数 限制关键字参数的名字

    (1)命名关键字参数需要一个特殊分隔符“*”,“*”后面的参数被视为命名关键字参数

    def person(name, age, *, city, job):
        print(name, age, city, job)
    
    
    person('Jack', 24, city='Beijing', job='Engineer')#命名关键字参数必须传入参数名,这和位置参数不同。

    (2)如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

    def person(name, age, *args, city, job):
        print(name, age, args, city, job)

    (3)命名关键字参数也可以有默认值

    def person(name, age, *, city='Beijing', job):
        print(name, age, city, job)

    person('Jack', 24, job='Engineer')

    调用时可不传入city参数

    6.参数组合

    在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

    def f1(a, b, c=0, *args, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
    
    def f2(a, b, c=0, *, d, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
  • 相关阅读:
    Tensorflow 2 flower_photos花卉数据集手动下载、离线安装、本地加载、快速读取
    [CC]ccHObject
    [CC]CC插件初探
    [g2o]一个备忘
    [PCL]keypoint
    [PCL]NDT点云匹配方法
    近邻搜索算法
    点云匹配和ICP算法概述
    [PCL]5 ICP算法进行点云匹配
    [PCL]4 PCL中图像匹配的几个类图
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/12562202.html
Copyright © 2011-2022 走看看