6-抽象

callable(obj) 判断某个函数是否是可调用的。

给函数编写文档

添加独立的字符串。在有些地方,如def语句后面。

放在函数开头的字符串称为文档字符串(docstring),将作为函数的一部分存储起来。

def square(x):
  'Calculates the square of the number x.'
  return x * x

>>> square.__doc__
'Calculates the square of the number x.'

能修改参数吗

参数如果是可变的数据结构(如列表), 将改变实参。

>>> def change(n):
... n[0] = 'Mr. Gumby'
>>> names = ['Mrs. Entity', 'Mrs. Thing']
>>> change(names)
>>> names
['Mr. Gumby', 'Mrs. Thing']

要避免这样的结果,必须创建列表的副本。n = name[:]

如果是不可变的数据结构

如果参数是不可变的数据类型,给参数赋值并让这种修改影响函数外部的变量是不可能的。在这种情况下,应从函数返回所有需要的值(如果需要返回多个值,就以元组的方式返回它们)。

如果一定要修改参数,可玩点花样,比如将值放在列表中

>>> def inc(x): x[0] = x[0] + 1
...
>>> foo = [10]
>>> inc(foo) >
>> foo
[11]

关键字参数和默认值

收集参数

def print_params(*params):
  print(params)

参数前面的星号将提供的所有值都放在一个元组中.

要收集关键字参数,可使用两个星号。得到一个字典。

分配参数

def add(x, y): return x + y
params = (1, 2)
>>> add(*params)
3
>>> def with_stars(**kwds):
... print(kwds['name'], 'is', kwds['age'], 'years old')
>>> args = {'name': 'Mr. Gumby', 'age': 42}
>>> with_stars(**args)

这在调用超类的构造函数时特别有用


作用域

vars() 返回一个字典,即作用域。

可使用函数globals来访问全局变量。必要时可使用globals()['parameter']

使用一个函数来创建另一个函数。

一个函数位于另一个函数中,且外面的函数返回里面的函数。也就是返回一个函数,而不是调用它。重要的是,返回的函数能够访问其定义所在的作用域。换而言之,它携带着自己所在的环境(和相关的局部变量)!

即闭包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值