首页 > 编程语言 > 详细

Python3 函数笔记

时间:2018-08-18 12:37:51      阅读:170      评论:0      收藏:0      [点我收藏+]

Python3 函数笔记

 

默认值在函数定义作用域被解析,如下所示:

>>> i =5

>>> def f(arg=i):

...     print(arg)

... 

>>> i=6

>>> f()

5

 

默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:

 

def f(a, L=[]):

    L.append(a)

    return L

 

print(f(1))

print(f(2))

print(f(3))

这将输出:

 

[1]

[1, 2]

[1, 2, 3]

 

 

如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:

 

def f(a, L=None):

    if L is None:

        L = []

    L.append(a)

    return L

 

#默认参数与关键字参数差异

def f(a, L=‘123‘,c=‘name‘):

    pass

#默认参数按顺序传值

f(1,‘123‘,‘456‘)

#关键字参数可以不按顺序

f(1,c=‘names‘)

 

‘‘‘    **name接受一个字典,包含了形参列表中未出现的所有关键字参数 *name接收一个元组,包含形参列表未出现的参数值,*name必须用在**name前‘‘‘

 

def cheeseshop(kind, *arguments, **keywords):

pass

 

#当你要传递的参数是是一个列表,但要调用的是一个个的值时,用    *   可以拆分列表

>>> list(range(3, 6))

[3, 4, 5]

>>> args = [3, 6]

>>> list(range(*args))

[3, 4, 5]

#同样的  **  可以拆分字典为一个个键对值

>>> def parrot(voltage, state=‘a stiff‘, action=‘voom‘):

...     print("-- This parrot wouldn‘t", action, end=‘ ‘)

...     print("if you put", voltage, "volts through it.", end=‘ ‘)

...     print("E‘s", state, "!")

...

>>> d = {"voltage": "four million", "state": "bleedin‘ demised", "action": "VOOM"}

>>> parrot(**d)

 

#匿名函数lambda做嵌套函数定义

# -*- coding: utf-8 -*-

def make(n):

    return lambda x:x+n

 

f=make(42)

print(f)

print(f(1))

#输出

<function make.<locals>.<lambda> at 0x10d954e18>

43

 

#匿名函数lambda做参数

>>> pairs = [(1, ‘one‘),(2, ‘two‘),(3, ‘three‘),(4, ‘four‘)]

>>> pairs.sort(key=lambda pair: pair[1])

>>> pairs

[(4, ‘four‘),(1, ‘one‘),(3, ‘three‘),(2, ‘two‘)]

 

#list.sort()做列表排序

list.sort(cmp=None, key=None, reverse=False)

‘‘‘

cmp -- 可选参数,如果指定了该参数会使用该参数的(函数)方法进行排序。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

‘‘‘

Python3 函数笔记

原文:https://www.cnblogs.com/IMWU/p/9496613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!