5.Python(函数)

Posted 最近饭吃的很多

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于5.Python(函数)的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

在 Visual Studio 中创建构造函数的代码片段或快捷方式

5.2Python函数

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

web代码片段

C#常用代码片段备忘