该内容面向实际工作时所需要注意编程规范
纯属个人见解,内容并不是完全靠谱,仅供参考
一:重复命名对象:
items = 'a b c d' # 首先指向字符串...
items = items.split(' ') # ...变为列表
items = set(items) # ...再变为集合
这种是常用的变量命名的方式,在简单的demo中使用并无大碍,但是对于大型的开发项目,如果也出现类似变量命名重复的问题的话,对于查看变量,处理变量是极其不方便的事情。
Python开发中建议不要对变量进行重复的命名,这样有助于提高代码的运行效率,方便开发人员的开发效率。
二:可变类型 or 不可变类型的区别:
可变类型就是可以对赋值的变量进行内部改变的变量类型
不可变类型就是对赋值的变量不能进行内部改变的变量类型
可变类型:
---------------------------------------------------------------------------------
#可变类型变量
variable_a=[1,2,3]
variable_a[0]=2
print(variable_a)
#不可变类型变量
variable_b=(1,2)
variable_b[0]=3
print(variable_b)
---------------------------------------------------------------------------------
三:列表推导式代替for循环
注意python中变量赋值了一个str对象,这个变量是不可变类型,如果要将不可变str类型放入可变类型list中该如何做呢,入门的菜鸟通常喜欢使用for循环+append的方法,但是这方法并不高明:
如下是高明的做法:
variable=list(map(str,range(20)))
print(variable)
Res:
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
四:函数中的参数使用方法:
在这样一个函数中,python开发中建议调用函数时,
最好不要改变参数的顺序,不要给参数添加名称
列一:规范
deffunction(parameter_a,parameter_b):
print(parameter_a,parameter_b)
function(1,2)
列二:不规范
deffunction(parameter_a,parameter_b):
print(parameter_a,parameter_b)
function(parameter_b=1,parameter_a=2)
五:函数签名:
函数签名包含了函数的参数名,参数类型,参数顺序
deffun(url,timeout,verify=True):
如上黄色标注的内容正是函数签名
六:关键字参数,可选参数的使用方法:
deffun(url,timeout,verify=True):
respones=requests.get(url,timeout,verify=verify)
print(respones.text)
fun('https://www.zhihu.com/question/24627666',5)
如果不给函数的参数一个默认值的话,这个参数就是关键字参数,
如果给函数的参数一个默认值的话,这个参数就是可选
七:__init__使用方法:
classSpider: #创建一个Spider类
def__init__(self,name,sex): #定义初始化函数
self.name=name #创建私有属性
self.sex=sex
defrun(self):
pass
instance=Spider('美丽','女') #实例化一个类,初始化类的私有属性
print(instance.name)
#这里的self就是Spider('美丽','女')
#创建一个Spider类,给这个类添加私有属性
#实例化一个Spider类,相当于调用这个类,给这个类传入实参,这个实参就是类的私有属性
具体的方法,调试一下Spider这个类,就能大致明白其中原理了
八:实参,形参的具体形式:
deffunction(position,school): #定义一个函数,函数中的参数就是形参
print(position)
print(school)
function('主播','中国传媒大学') #调用函数,函数中的传入的参数就是是实参
九:废弃变量: 【工作编程环境下作用不大】
Python建议对于不需要赋值的变量可以使用__ (双下划线)
如果变量是__这个的话就可以认为是废弃变量,作用指明该变量是无用的
variable='university'
x,_,y=variable[0:3]
print(x,_,y)
Res:
u n i
十:set的使用环境:
s = set(['s', 'p', 'a', 'm'])l = ['s', 'p', 'a', 'm']
def lookup_set(s):
return 's' in s
def lookup_list(l):
return 's' in l
如上
在集合中,项的哈希值将会告诉Python在集合的哪里去查找匹配的项。
所以如果要在list中使用in的方法的话,python建议使用set(),这样的好处是提高性能。
十一:变量是什么:
如下声明一个变量
variable=dict([(i,y)fori inrange(10)if i%2if i>4for yin range(10)if y>6if y!=7])
Variable 是变量名
= 是赋值符号
dict([(i,y)fori inrange(10)if i%2if i>4for yin range(10)if y>6if y!=7]) 是变量值
变量名=变量值 定义的这个关系就是变量,一般来说变量是可变的,在代码中会赋值不同的类型。
作用:规范代码
十二:常量是什么:
python常量包括:数字、字符串、布尔值、空值 (大致了解就行)
CONSTANT=reduce(lambda x,y:x+y,list(map(lambda x:x+100,a)))
一般常量会用大写来表示变量名,常量本质上就是变量,不过是换了个说法而已。
CONSTANT=reduce(lambda x,y:x+y,list(map(lambda x:x+100,a)))就是常量,
在代码中承担着引用的作用,一般不会随意赋值不同的类型给常量。
作用:规范代码
十三:真值测试的规范写法:
if attr == True:
print 'True!'
python中不建议使用==来检测变量是否是真,或假,以上代码不规范
if attr:
print 'attr is truthy!'
以上是规范的python真值测试的写法
十四:访问字典元素:
访问字典元素的时候,python建议使用如下方法
d = {'hello': 'world'}
if 'hello' in d:
print d['hello']
print d.get('hello', 'default_value')
在实际工作时,还是比较实用的,了解就行
十四:物理行,逻辑行的区别:
物理行即编辑器中看到的行。
如上所示,header_zero变量有四个物理行,header_one变量有三个物理行
逻辑行即终端中看到的行
如上是终端执行的结果,可以看出header_zero在终端中有一个逻辑行
Header_one在终端中有三个逻辑行
Python建议当物理行较多时,可以使用隐性的行连接,就是header_zero的方法