Python语法学习三之函数

一、简单函数定义和调用

    def 函数名():
        代码
# 无参数,无返回值的函数
def printName():
    print "cehae"


printName()


# 无参数,有返回值的函数
def getAge():
    return 18


print getAge()


# 有参数,无返回值的函数
def printSex(sex):
    print sex


printSex("男")


# 有参数,有返回值的函数
def calculateNum(num):
    result = 0
    i = 1
    while i <= num:
        result = result + i
        i += 1
    return result


print('1~100的累积和为:%d' % calculateNum(100))

二、函数参数

2-1、缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
注意:带有默认值的参数一定要位于参数列表的最后面。

def printinfo(name, age=35):
    # 打印任何传入的字符串
    print "Name: ", name
    print "Age ", age


# 调用printinfo函数
printinfo(name="miki")
printinfo(age=9, name="miki")
2-2、不定长参数

有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。
基本语法如下:

def functionname([formal_args,] *args, **kwargs):
    "处理业务逻辑"
     return 返回值

加了星号 * 的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。

# 可变参数演示示例
def fun(a, b, *args, **kwargs):
    print "a =", a
    print "b =", b
    print "args =", args
    print "kwargs: "
    for key, value in kwargs.items():
        print key, "=", value


fun(1, 2, 3, 4, 5, m=6, n=7, p=8)  # 注意传递的参数对应

图片.png

2-3、引用传参

Python中函数参数是引用传递(注意不是值传递)。
对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;
而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。

def selfAdd(a):
    a += a
    print id(a)
    # 59206064
    # 60911368


# 不可变对象,值传递
a = 1
print a, id(a)
# 1 59206088

# 调用函数
selfAdd(a)

print a, id(a)
# 1 59206088

# 可变对象,引用传递
a = [1, 2]
print a, id(a)
# [1, 2] 60911368

# 调用函数
selfAdd(a)

print a, id(a)
# [1, 2, 1, 2] 60911368

图片.png

三、匿名函数

3-1、匿名函数定义

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
lambda函数的语法只包含一个语句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression

示例

    sum = lambda arg1, arg2: arg1 + arg2

    #调用sum函数
    print "Value of total : ", sum( 10, 20 )
    print "Value of total : ", sum( 20, 20 )
3-2、匿名函数应用场景
3-2-1、场景1:函数作为参数传递
def fun(a, b, option):
    print "a=", a
    print "b=", b
    print "result = ", option(a, b)

fun(1, 2, lambda x, y: x + y)
3-2-2、场景2:作为内置函数的参数
stus = [
    {"name": "zhangsan", "age": 18},
    {"name": "lisi", "age": 19},
    {"name": "wangwu", "age": 17}
]
print stus

stus.sort()
print stus

stus.sort(key=lambda x: x["name"])
print stus

stus.sort(key=lambda x: x["age"])
print stus
posted @ 2024-04-03 17:09  阿东知识库  阅读(45)  评论(0)    收藏  举报