基本数据类型 (六、七):模块、高级用法

模块

# 用import导入模块
import math
print(math.sqrt(16)) # => 4.0
# 也可以从模块中导入个别值
from math import ceil, floor
print(ceil(3.7)) # => 4.0
print(floor(3.7)) # => 3.0
# 可以导入一个模块中所有值
# 警告:不建议这么做
from math import *
# 如此缩写模块名字
import math as m
math.sqrt(16) == m.sqrt(16) # => True
# Python模块其实就是普通的Python文件。你可以自己写,然后导入,
# 模块的名字就是文件的名字。
# 你可以这样列出一个模块里所有的值
import math
dir(math)

高级用法

# 用生成器(generators)方便地写惰性运算
def double_numbers(iterable):
 for i in iterable:
 yield i + i

# 生成器只有在需要时才计算下一个值。它们每一次循环只生成一个值,而不是把所有的值全部算好。
# range的返回值也是一个生成器,不然一个1900000000的列表会花很多时间和内存。

# 如果你想用一个Python的关键字当作变量名,可以加一个下划线来区分。
range_ = range(1, 900000000)
# 当找到一个 >=30 的结果就会停
# 这意味着 `double_numbers` 不会生成大于30的数。
for i in double_numbers(range_):
 print(i)
 if i >= 30:
 break
# 装饰器(decorators)
# 这个例子中,beg装饰say
# beg会先调用say。如果返回的say_please为真,beg会改变返回的字符串。
from functools import wraps
def beg(target_function):
 @wraps(target_function)
 def wrapper(*args, **kwargs):
 msg, say_please = target_function(*args, **kwargs)
 if say_please:
 return "{} {}".format(msg, "Please! I am poor :(")
 return msg
 return wrapper
@beg
def say(say_please=False):
 msg = "Can you buy me a beer?"
 return msg, say_please
print(say()) # Can you buy me a beer?
print(say(say_please=True)) # Can you buy me a beer? Please! I am poor :(

往期文章

基本数据类型 (五):类
基本数据类型 (四)函数
基本数据类型 (三)流程控制和迭代器
基本数据类型 (二)变量和集合
基本数据类型(一). 原始数据类型和运算符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值