【python】-- 内置函数、软件目录开发规范(代码编码风格)
内置函数
一、内置函数表格
二、内置函数演示
1、abs(x) 功能:取数的绝对值 >>> abs(-1) #取-1的绝对值
1 #######################################
2、all(iterable) 功能:如果这个可迭代的元素都为真,则返回真(非0的就为真,负数也是为真) >>> all([0,1,3]) #有0,说明为假
False
>>> all([1,-5,6]) #负数也是为真
True #######################################
3、any(iterable) 功能:可迭代的元素中,有一个为真,则返回真,空列表返回假。 >>> any([0,1,2]) #有一个为真,则为真
True
>>> any([]) #空列表为假
False #######################################
4、ascii(object) 功能:把内存对象变成一个可打印的字符串格式 >>> ascii([1,2,3,4])
'[1, 2, 3, 4]' #######################################
5、bin(x) 功能:把一个整数转换成二进制 >>> bin(300) #把300转换成二进制
'0b100101100'
>>> bin(1)
'0b1' #######################################
6、bool([x]) 功能:返回一个布尔值,空列表为假,不为空为真 >>> bool([]) #空列表
False
>>> bool([1,2]) #不为空列表
True
>>> bool([0])
True #######################################
7、bytearray[source[, encoding[, errors]]] 功能:字节数组,并且可以修改二进制的字节 >>> b = bytearray("abcd",encoding="utf-8") #声明一个字节数组
>>> b[0] #打印第一个元素的ascii值,也就是'a'对应的ascii值
97
>>> b[0] = 100 #修改时,只能赋值对应字符的ascii值
>>> b
bytearray(b'dbcd') #发现字节数组值被修改 #######################################
8、bytes([source[, encoding[, errors]]]) 功能:把字符串转换成字节 >>> b = bytes("abcd",encoding="utf-8") #声明字节
>>> b
b'abcd'
>>> b[0] #访问到'a'字符对应的ASCII值
97
>>> b[0]=100 #不可以修改里面的值,不然会报错
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment #######################################
9、callable(object) 功能:判断一个对象是否可以被调用,只有在后面有括号的,表示可以调用,比如:函数,类。 >>> callable([]) #列表后面不加括号
False
>>> def sayhi():pass #定义一个函数
>>> callable(sayhi) #函数调用,后面需要加括号
True #######################################
10、chr(i) 功能:通过ascii的值,找到对应的字符 >>> chr(97)
'a' #######################################
11、ord(c) 功能:根据字符,找到对应的ascii值
>>> ord('a')
97 #######################################
12、classmethod(function) 功能:类方法,类内部装饰器 #######################################
13、compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 功能:用于把代码编译的一个过程,这个基本用不到 >>> code = """1+3/2*6"""
>>> py_object = compile(code,'','eval') #把代码转换为字符串
>>> eval(py_object) #执行
10.0 #######################################
14、complex([real[, imag]]) 功能:返回一个复数,我们几乎用不到。
>>> complex('1+2j')
(1+2j)
15、delattr(object, name) 功能:类那边使用的,先不care。 ####################################### 16、dict(**kwarg)、dict(mapping, **kwarg)、dict(iterable, **kwarg) 功能:返回一个字典
>>> dict() #定义一个字典
{}
>>> dict(name='zhangqigao',age=18) #传入非固定关键字参数
{'name': 'zhangqigao', 'age': 18}
>>> dict([('name','zhangqigao'),('age',18)]) #传入一个列表
{'name': 'zhangqigao', 'age': 18}
>>> dict([['name','zhangqigao'],['age',18]]) #传入一个列表
{'name': 'zhangqigao', 'age': 18} #######################################
17、dir([object]) 功能:看一个对象有哪些方法 >>> name = []
>>> dir(name) #显示name下的所有的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] #######################################
18、divmod(a,b) 功能:地板除,获得一个元组,元组第一个元素是商,第二个元素是余数。
>>> divmod(5,2)
(2, 1) #2是商,1是余数 #######################################
19、enumerate(iterable,start=0) 功能:获取一个列表,列表中的每个元素都是一个元组,元组的第一个数是iterable的索引,第二个数是iterable的元素。
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')] #######################################
20、eval(expression, globals=None, locals=None) 功能:把字典类型的字符串变成字典,把一个整数类型的字符变成int类型,或者加减乘除这种简单转换成表达式。
>>> eval('') #字符类型转换成int类型
1
>>> eval("1+3/2*6") #字符串转换为表达式
10.0 #######################################
21、exec(object[, globals[, locals]]) 功能:有语句的和复杂的语句的字符串转换成表达式 code = '''
def timmer(func): #timmer(test1) func=test1
def deco(*args,**kwargs):
res = func(*args,**kwargs) #run test1()
return res
return deco @timmer
def test1():
print("in the test1")
return "from the test1" res = test1()
print(res)
''' exec(code) #输出
in the test1
from the test1 #####################################
22、filter(function, iterable) 功能:通过function过滤条件,去获取iterable中你想要的数据。 >>> res = filter(lambda n:n>5,range(10))
>>> res #得到一个迭代器
<filter object at 0x0000000003093BE0>
>>> for i in res:
print(i) #####################################
23、map(function, iterable) 功能:对传入的每一个值进行处理,处理完了再返回,再把原来的结果覆盖掉。 >>> res = map(lambda n:n*2,range(5)) #n*2是处理方式
>>> res
<map object at 0x00000000031B4BE0>
>>> for i in res:
print(i)
0
2
4
6
8 #####################################
24、reduce(function,iterable) 功能:把一组可迭代序列通过function函数操作,元素之间相加或者相乘操作。
>>> from functools import reduce
>>> res = reduce(lambda x,y:x+y,range(10)) #x+y的值赋给x,rang(10)中的每个元素赋给y
>>> res
45
>>> res = reduce(lambda x,y:x*y,range(1,10)) #x*y的值赋给x,rang(10)中的每个元素赋给y
>>> res
362880 #####################################
25、float([x]) 功能:把一个浮点类型的字符串转换为浮点类型的数据。 >>> float('+1.23')
1.23
>>> float(' -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf #####################################
26、format(value[, format_spec]) 功能:格式话字符串,以前随笔中有介绍 #####################################
27、frozenset([iterable]) 功能:把集合变成一个不可变的集合 >>> res = frozenset([1,2,3,4,3])
>>> res
frozenset({1, 2, 3, 4}) #去重的,不可变的集合
>>> dir(res) #没有可变的方法
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__iter__', '__le__',
'__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__',
'__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__',
'__subclasshook__', '__xor__', 'copy', 'difference', 'intersection', 'isdisjoint', 'issubset',
'issuperset', 'symmetric_difference', 'union']
注:set()是可变的 #####################################
28、getattr(object, name[, default]) 功能:类中的反射函数 #####################################
29、globals() 功能:返回当前这个python文件中的所有变量的key-value,变量是key,值是value print(globals()) #输出
{'__spec__': None, '__name__': '__main__', '__file__': 'D:/PycharmProjects/pyhomework
/day4/内置函数/内置函数.py', '__doc__': None, '__package__': None, '__loader__':
<_frozen_importlib_external.SourceFileLoader object at 0x0000000000695B00>,
'__cached__': None, '__builtins__': <module 'built
注:可以判断一个文件中的变量是否存在,而globals()只能打印全局变量 #####################################
30、hash(object) 功能:反射出一个对象的对应的hash值。 >>> hash('zhangqigao')
2313972277536963491
>>> hash(255)
255
>>> hash('a')
6806508886604307842 #####################################
31、help([object]) 功能:显示对象的帮助信息 >>> res = [] #定义一个列表
>>> help(res) #打印帮助信息
Help on list object: class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
|
| Methods defined here:
|
..... #####################################
32、hex(x) 功能:把一个数字转成16进制 >>> hex(255)
'0xff'
>>> hex(10)
'0xa' #####################################
33、id(object)
功能:返回对象的内存地址 >>> id('zhangqigao')
50993136 #'zhangqigao'这个字符串的内存地址 #####################################
34、input([prompt]) 功能:输入字符串 >>> s = input('--> ')
--> Monty Python's Flying Circus #输入的内容
>>> s
"Monty Python's Flying Circus" #####################################
35、int(x) 功能:把其他数据类型强制转换成int类型 >>> int('')
10 #####################################
36、isinstance(object, classinfo) 功能:这个在迭代器中使用,详情:猛击这里 #####################################
37、issubclass(class, classinfo) 功能:判断是否是一个子类,这个后续讲到类那边会讲 #####################################
38、iter(object[, sentinel]) 功能:把一个普通序列转成迭代器 with open('mydata.txt') as fp:
for line in iter(fp.readline, ''):
process_line(line) #####################################
39、len(s) 功能:计算序列或者字符串的长度 >>> len("zhangqigao") #字符串的长度
10
>>> len([1,2,3,4,5]) #列表的长度
5 #####################################
40、list([iterable]) 功能:把其他序列转换成一个列表 >>> list((1,2,3,4,5)) #把一个元组转换为一个列表
[1, 2, 3, 4, 5] #####################################
41、locals() 功能:打印局部变量 def test():
locals_var = 333
print(locals()) #只打印局部变量 test()
print(globals().get("locals_var")) #只能打印全局变量 #输出 {'locals_var': 333}
None #####################################
42、max(iterable, *[, key, default])
能:返回列表重点额最大值 >>> max([1,2,3,4,5])
5 #####################################
43、min(iterable, *[, key, default]) 功能:返回列表中的最小值 >>> min([1,2,3,4,5])
1 #####################################
44、memoryview(obj) 功能:暂时用不到 #####################################
45、next(iterator[, default]) 功能:返回迭代器的下一个值,相当于__next__()方法,如果迭代最后一个数据之后没有值了,则会抛出一个StopIteration异常 >>> a = iter([1,2])
>>> next(a)
1
>>> next(a)
2
>>> next(a)
Traceback (most recent call last):
File "<input>", line 1, in <module>
StopIteration #####################################
46、object 功能:python中一切皆对象,每一个对象都有它的属性和方法 #####################################
47、oct(x) 功能:把一个数转成8进制 >>> oct(7)
'0o7'
>>> oct(8)
'0o10'
>>> oct(15)
'0o17'
>>> oct(16)
'0o20' #####################################
48、open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 功能:文件操作 #####################################
49、pow(x, y[, z]) 功能:返回多少次幂 >>> pow(2,3) #相当于2**3
8 #####################################
50、print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 功能:打印 >>> print("zhangqigao")
zhangqigao #####################################
51、property(fget=None, fset=None, fdel=None, doc=None) 功能:类方法。类内部装饰器 #####################################
52、range(stop)、range(start, stop[, step]) 功能:生成一个迭代器 >>> range(5)
range(0, 5)
>>> range(1,5)
range(1, 5)
>>> range(1,5,2)
range(1, 5, 2) #####################################
53、repr(object) 功能:把代码转成字符串对象 #####################################
54、reversed(seq) 功能:反转一个序列,跟列表中的reversed方法是一样的 >>> reversed([1,2,3,4,5])
<list_reverseiterator object at 0x00000000030A2588> #变成一个迭代器
>>> for i in reversed([1,2,3,4,5]):
... print(i)
...
5
4
3
2
1 #####################################
55、round(number[, ndigits]) 功能:保留float数据类型位数 >>> round(1.23344,2) #保留两位
1.23 #####################################
56、set([iterable]) 功能:创建一个集合 #####################################
57、setattr(object, name, value) 功能:类的反射方法 #####################################
58、slice(stop),slice(start, stop[, step]) 功能:序列的切片 >>> a = [1,2,3,4,5,6]
>>> a[slice(1,3)]
[2, 3]
>>> a[1:3]
[2, 3] #####################################
59、sorted(iterable[, key][, reverse]) 功能:对一个序列进行排序 >>> sorted([5,3,2,6,8])
[2, 3, 5, 6, 8]
>>> a = {1:5,6:8,3:6}
>>> sorted(a) #默认是按key排序
[1, 3, 6]
>>> sorted(a.items()) #按key排序
[(1, 5), (3, 6), (6, 8)]
>>> sorted(a.items(),key = lambda x:x[1]) #按value排序
[(1, 5), (3, 6), (6, 8)] #####################################
60、 str(object) 功能:把其他数据类型转换为字符串 >>> str(1)
'' #####################################
61、sum(iterable[, start]) 功能:求一个列表的和 >>> sum([1,2,3,4,5,6])
21 #####################################
62、super([type[, object-or-type]]) 功能:这个是类的继承,新式类 #####################################
63、tuple([iterable]) 功能:把其他序列转换为一个元组 >>> tuple([1,2,3,4,5])
(1, 2, 3, 4, 5) #####################################
64、type(object) 、type(name, bases, dict) 功能:查看一个对象的数据类型 >>> a = 'zhangqigao'
>>> type(a)
<class 'str'>
注:一切数据类型都是有type()方法产生,它是一切数据类型的根。 #####################################
65、vars([object]) 功能:返回对象的所有属性 #####################################
66、zip(*iterables) 功能:zip中文意思是拉链的意思,把两个序列一一对应起来。 >>> a = [1,2,3,4]
>>> b=['a','b','c','d']
>>> for i in zip(a,b):
... print(i)
...
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
注:如果a的元素比b的多,则按照元素最少的那个来 #####################################
67、__import__(name, globals=None, locals=None, fromlist=(), level=0) 功能:当导入的模块是一个字符串时,用__import__() >>> import os
>>> __import__('os')
<module 'os' from 'D:\\Python\\Python35\\lib\\os.py'>
更多详情:点击
软件开发目录设计规范
良好的,规范的软件目录结构,能更好的控制程序,让程序具有更高的可读性,可维护性。
- 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
- 可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
1、目录结构
假设你的项目名为foo,目录结构可以设计成这样:
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
简要解释一下:
bin/
: 存放项目的一些可执行文件,当然你可以起名script/
之类的也行。foo/
: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/
存放单元测试代码; (3) 程序的入口最好命名为main.py
。docs/
: 存放一些文档。setup.py
: 安装、部署、打包的脚本。requirements.txt
: 存放软件依赖的外部Python包列表。README
: 项目说明文件。
除此之外,有一些方案给出了更加多的内容。比如LICENSE.txt
,ChangeLog.txt
文件等,我没有列在这里,因为这些东西主要是项目开源的时候需要用到。如果你想写一个开源软件,目录该如何组织,可以参考这里:点击
2、README
每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。
它需要说明以下几个事项:
- 软件定位,软件的基本功能。
- 运行代码的方法: 安装环境、启动命令等。
- 简要的使用说明。
- 代码目录结构说明,更详细点可以说明软件的基本原理。
- 常见问题说明。
参考:点击
3、setup.py
一般来说,用setup.py
来管理代码的打包、安装、部署问题。业界标准的写法是用Python流行的打包工具setuptools来管理这些事情。这种方式普遍应用于开源项目中。不过这里的核心思想不是用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。
Python写项目的时候,安装环境、部署代码、运行程序这个过程如果是手动完成,会遇到过以下问题:
- 安装环境时经常忘了最近又添加了一个新的Python包,结果一到线上运行,程序就出错了。
- Python包的版本依赖问题,有时候我们程序中使用的是一个版本的Python包,但是官方的已经是最新的包了,通过手动安装就可能装错了。
- 如果依赖的包很多的话,一个一个安装这些依赖是很费时的事情。
- 新同学开始写项目的时候,将程序跑起来非常麻烦,因为可能经常忘了要怎么安装各种依赖。
setup.py
可以将这些事情自动化起来,提高效率、减少出错的概率。"复杂的东西自动化,能自动化的东西一定要自动化。"
4、requirements.txt
这个文件存在的目的是:
- 方便开发者维护软件的包依赖。将开发过程中新增的包添加进这个列表中,避免在
setup.py
安装依赖时漏掉软件包。 - 方便读者明确项目使用了哪些Python包。
这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10
这种格式,要求是这个格式能被pip
识别,这样就可以简单的通过 pip install -r requirements.txt
来把所有Python包依赖都装好了。
具体格式说明:点击
【python】-- 内置函数、软件目录开发规范(代码编码风格)的更多相关文章
- Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- 【转】python 内置函数总结(大部分)
[转]python 内置函数总结(大部分) python 内置函数大讲堂 python全栈开发,内置函数 1. 内置函数 python的内置函数截止到python版本3.6.2,现在python一共为 ...
- python 内置函数总结(大部分)
python 内置函数大讲堂 python全栈开发,内置函数 1. 内置函数 python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是pytho ...
- Python之路(第八篇)Python内置函数、zip()、max()、min()
一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...
- Python之路Python内置函数、zip()、max()、min()
Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...
- Python内置函数和内置常量
Python内置函数 1.abs(x) 返回一个数的绝对值.实参可以是整数或浮点数.如果实参是一个复数,返回它的模. 2.all(iterable) 如果 iterable 的所有元素为真(或迭代器为 ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- python 内置函数和函数装饰器
python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...
- Python基础篇【第2篇】: Python内置函数(一)
Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
随机推荐
- linux文件测试操作
1.文件测试操作 返回 true 如果... -e 文件存在 -a 文件存在 这个选项的效果与-e 相同.但是它已经被弃用了,并且不鼓励使用 -f file 是一个 regular 文件(不是目录或者 ...
- 转: java web demo的示例
http://quqtalk.iteye.com/blog/360699 从事Java开发已经两年了,但是由于工作的关系,对Java Web还是个freshman.今天做了一个Java Web的简单D ...
- Java三大器之监听器(Listener)的工作原理和代码演示
现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次, ...
- ListView控件绑定DataSet
DataSet数据集,数据缓存在客户端内存中,支持断开式连接. 在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根 ...
- json-server模拟接口获取mock数据
转载:http://blog.csdn.net/stevennest/article/details/76167343 安装json-server 运行以下命令 cnpm install json-s ...
- HTTP Analyzer过滤器使用
HTTP Analyzer简单易用,真实抓包居家必备啊,上一次分享了Fiddler的过滤条件,这次介绍下这款软件的过滤,首先按照肯定是按照软件类型分类喽: 1.按照软件过滤: 这样只会显示chrome ...
- KingdeeK3-修改单据邮件发送的自定义字段
只需要执行类似下面语句即可: update ICTemplateentry set FVisForBillType = 63,flookupcls=6 where fid ='P01' and fhe ...
- 安装pydot及importError解决办法
安装pydot: 需要先安装graphviz和pyparsing. 安装pydot过程曾出现“import error” 错误,主要是版本不兼容的问题.之后自己apt-get upgrade了一下,问 ...
- c#关于int(或其他类型)的字段在对象初始化时默认初始化问题的解决方法
问题: c#的wcf服务接口在后台通过自定义对象接收前台参数的时候,前台参数即使不传int类型的字段值,后台也会默认初始化为0,由于很多表示状态的int字段都是从0开始的,导致查询的时候有些不想参与查 ...
- Linux下利用phpize安装memcashe的php源码扩展包
phpize是php的一种构建工具,为PHP扩展准备构建环境,通过phpize可以编译php的扩展源码文件为php扩展模块. 一.安装 phpize工具可以通过安装php-dev包自动集成安装.安装完 ...