Python学习笔记6:抽象

抽象

函数

  1. 判断某个对象是否可调用,可使用内置函数callable
>>> import math 
>>> x = 1 
>>> y = math.sqrt 
>>> callable(x) 
False 
>>> callable(y) 
True
  1. 斐波那契数组
def fibs(num): 
    result = [0, 1] 
    for i in range(num-2): 
        result.append(result[-2] + result[-1]) 
    return result
  1. 文档字符串
def square(x): 
    'Calculates the square of the number x.' 
    return x * x

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

  1. 所有的函数都返回值。如果你没有告诉它们该返回什么,将返回None

  2. 收集参数

def print_params(*params): 
    print(params)
# 打印的是一个**元组**
>>> print_params('Testing') 
('Testing',)
  1. 收集关键字参数
>>> def print_params_3(**params): 
print(params)
# 打印的是一个**字典**
>>> print_params_3(x=1, y=2, z=3) 
{'z': 3, 'x': 1, 'y': 2}

只有在定义函数(允许可变数量的参数)或调用函数时(拆分字典或序列)使用,星号才能发挥作用

作用域

  1. 为vars的内置函数,它返回这个不可见的字典
>>> x = 1 
>>> scope = vars() 
>>> scope['x'] 
1 
>>> scope['x'] += 1 
>>> x 
2
  1. globals来访问全局变量, 返回一个包含全局变量的字典。(locals返回一个包含局部变量的字典。)
>>> def combine(parameter): 
... print(parameter + globals()['parameter']) 
... 
>>> parameter = 'berry' 
>>> combine('Shrub') 
Shrubberry

# 重新关联
>>> x = 1 
>>> def change_global(): 
... global x 
... x = x + 1 
... 
>>> change_global() 
>>> x 
2

递归

  1. 阶乘
  • 1的阶乘为1。
  • 对于大于1的数字n,其阶乘为n  1的阶乘再乘以n。
def factorial(n): 
    if n == 1: 
        return 1                        
    else: 
        return n * factorial(n - 1)     
  • 对于任何数字x,power(x, 0)都为1。
  • n>0时,power(x, n)为power(x, n-1)与x的乘积。
def power(x, n): 
    if n == 0: 
        return 1 
    else: 
        return x * power(x, n - 1)
  1. 二分查找
  • 如果上限和下限相同,就说明它们都指向数字所在的位置,因此将这个数字返回。
  • 否则,找出区间的中间位置(上限和下限的平均值),再确定数字在左半部分还是右半部
    分。然后在继续在数字所在的那部分中查找。
def search(sequence, number, lower=0, upper=None): 
    if lower == upper: 
        assert number == sequence[upper] 
        return upper 
    else: 
        middle = (lower + upper) // 2 
        if number > sequence[middle]: 
            return search(sequence, number, middle + 1, upper) 
        else: 
            return search(sequence, number, lower, middle)

小结

抽象:抽象是隐藏不必要细节的艺术。通过定义处理细节的函数,可让程序更抽象。

函数定义:函数是使用def语句定义的。函数由语句块组成,它们从外部接受值(参数),
并可能返回一个或多个值(计算结果)。

参数:函数通过参数(调用函数时被设置的变量)接收所需的信息。在Python中,参数有
两类:位置参数和关键字参数。通过给参数指定默认值,可使其变成可选的。

作用域:变量存储在作用域(也叫命名空间)中。在Python中,作用域分两大类:全局作
用域和局部作用域。作用域可以嵌套。

递归:函数可调用自身,这称为递归。可使用递归完成的任何任务都可使用循环来完成,
但有时使用递归函数的可读性更高。

函数式编程:Python提供了一些函数式编程工具,其中包括lambda表达式以及函数map、
filter和reduce。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值