模块、包、库、框架的区别
- 模块(module)
- 一个 .py 文件就是个module
- 写的代码保存为文件,这个文件就是一个模块。比如 practice.py 其中的文件名practice为模块的名字
- 包(package)
- 包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境
- 包是一个一定含有 init.py 文件和其他模块或子包的目录
- 库(lib)
- 指python中能完成一定功能的代码集合(参考其他编程语言的说法)
- 框架(framework)
- 框架是一个基本概念的结构,用于去解决或处理复杂的问题
- 比如:Django,flask等
Python中 *args 和 **kwargs 的区别
在浏览这个模块的时候,经常可以看见函数的形参为 args 或*kwargs,那么这一小节我们来总结一下这两者之前的区别
可变长度参数:*args 和 **kwargs
- *args
- *args 用来将参数打包成tuple(元祖)给函数体调用
- 使用时让可变参数放在顺序参数的后面(详情查看Python参数的顺序)
- **kwargs
- **kwargs 打包关键字参数成dic(字典)给函数体调用
- 调用arg,args,*kwargs参数的顺序
def func(arg, *args, **kwargs):
print(arg, *args, **kwargs)
func(6, 7, 8, 9, 10, a=2, b=8, c=10)
输出结果:
6 (7, 8, 9, 10) {'a':2, 'b':8, 'c':10}
Functions 函数
1. abs()
Return the absolute value of the argument
2. all()
Return True if bool(x) is True for all values x in the iterable(可迭代对象). If the iterable is empty, return True
- 什么是迭代(iteration)
- 给定一个list(tuple/dict),通过for循环来遍历这个list(tuple/dict),这种遍历就是迭代
- 可以用 collections模块 里面的 iterable包 的 isinstance 函数进行判断:
>>> from collections import Iterbale
>>> isinstance('abcde', Iterable)
True
>>> isinstance([1,2,3], Iterable)
True
>>> isinstance((1,2,3), Iterable)
True
>>> isinstance({'abcde':2}, Iterable)
True
3. any()
Return True if bool(x) is True for any x in the iterable. If the iterable is empty, return False
4. ascii(object)
Return an ASCII-only representation of an object.
As repr(), return a string containing a printable representation of an object, but escape the non-ASCII characters in the string returned by repr() using \x, \u or \U escapes. This generates a string similarto that returned by repr() in Python 2.
- 返回一个(仅ASCII码)对象的表示
- 在python2中和repr()函数相同,如果有非ASCII字符就会输出\x, \u或\U等字符来表示
5. bin(), oct(), hex()
- bin() 返回一个二进制数:'0b...'
- oct() 返回一个八进制数:'0o...'
- hex() 返回一个十六进制数:'0x...'
- 注意点:
- 参数不仅仅可以是十进制数,还可以是二,八,十六进制,但注意一定要表示清楚 i.e. 'bin(0xd)'
网友评论