百木园-与人分享,
就是让自己快乐。

python函数

定义函数的一般格式:

det function():

  statements

  return a

return用于退出函数,向调用方返回一个表达式

函数可以不设置参数,也可以设置参数:

def function1():
    print(\'大湘菜\')


def function2(a):
    print(a)


function1()
function2(\'小湘菜\')

结果为:

大湘菜
小湘菜

python传递不可变对象,会生成一个新对象:

def change(a):
    print(id(a))
    a = 2
    print(id(a))


a = 1
print(id(a))
change(a)

结果为:

1460124477744
1460124477744
1460124478032

python传递可变对象,指向的是同一个对象:

def change(a):
    print(id(a))
    a.append(4)
    print(id(a))


a = [1, 2, 3]
print(id(a))
change(a)

结果为:

1874883986496
1874883986496
1874883986496

参数类型

1、必须参数:

def myprint(a):
    print(a)


myprint(\'大湘菜\')

结果为:

大湘菜

2、关键字参数,允许调用的参数顺序和声明时不一致:

def myprint(name, age):
    print(\'我的名字是\' + name + \',年龄是\' + age + \'岁。\')


myprint(age=\'18\', name=\'大湘菜\')

结果为:

名字是大湘菜,年龄是18岁。

3、默认参数,如果没有参数传递,使用默认参数:

def myprint(name, age=\'18\'):
    print(\'我的名字是\' + name + \',年龄是\' + age + \'岁。\')


myprint(\'大湘菜\')
myprint(\'小湘菜\', \'81\')

结果为:

我的名字是大湘菜,年龄是18岁。
我的名字是小湘菜,年龄是81岁。

4、不定长参数,加了*,指的是函数比初声明时使用了更多的参数,会以元组的形式存入:

def myprint(name, *otherinfo):
    print(\'我的名字是\' + name)
    print(otherinfo)


myprint(\'大湘菜\')
myprint(\'大湘菜\', 1, 2, 3)

结果为:

我的名字是大湘菜
()
我的名字是大湘菜
(1, 2, 3)

加了**的参数会以字典的形式导入

声明函数时,*可以单独出现,但是*后的参数必须用关键字传入:

def myprint(name, *, age):
    print(\'我的名字是\' + name)
    print(\'我的年龄是\' + age)


myprint(\'大湘菜\', age=\'18\')

结果为:

我的名字是大湘菜
我的年龄是18

 匿名函数

一般形式:

lamda arg1, arg2…: expression

lamda的主体是一个表达式,而不是一个代码块。lamda拥有自己的命名空间,不能访问全局命名空间的参数

info = lambda name, age: \'姓名为\' + name + \',年龄为\' + age
print(info(\'大湘菜\', \'18\'))

结果为:

姓名为大湘菜,年龄为18

可以把匿名函数封装到函数内:

def info():
    return lambda name, age: \'姓名为\' + name + \',年龄为\' + age


returnFunction = info()  # 返回lamda匿名函数
print(returnFunction(\'大湘菜\', \'18\'))

结果为:

姓名为大湘菜,年龄为18

强制位置参数

函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式


来源:https://www.cnblogs.com/daxiangcai/p/16163763.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » python函数

相关推荐

  • 暂无文章