2.3 Python语法基础
变量和参数传递
变量赋值时,注意是对一个对象的双重引用,以下a,b都指向一个对象,运行结果是[1, 2, 3, 4]
a=[1,2,3]
b=a
a=a.append(4)
b
要理解python 引用的含义,数据是何时、如何、为何复制的。
鸭子类型
经常的,你不关心一个对象的类型,只关心对象是否有某些方法或用途,通常被称为“鸭子类型”,常⻅的例子是编写⼀个函数可以接受任意类型的序列(list、tuple、 ndarray)或是迭代器。你可先检验对象是否是列表(或是 NUmPy数组),如果不是的话,将其转变成列表:运行结果
['s', 'w', 'e']
def isiterable(obj):
if iter(obj):
return True
else:
return False
x="swe"
if not isinstance(x,list) and isiterable(x):
x =list(x)
print(x)
引入
以下从同目录下导入some_module模块,
从上一目录找到base文件夹找到jira文件夹导入utils模块,
从上一目录找到base文件夹找到jira文件夹导入ismdefectloader模块的JiraISMDefectLoader类
from . import some_module
from ..base.jira import utils as utils
from ..base.jira.ismdefectloader import JiraISMDefectLoader
⼆元运算符和⽐较运算符
is和is not常⽤来判断⼀个变量是否为None:以下判断summary_a是否为空或none(excel单元格)
if summary_a != "" and summary_a != 'None':
可变与不可变对象
可变:如列表、字典、NumPy数组,和⽤ 户定义的类型(类);
不可变:元组和字符串。等
控制流
if、elif和else循环。
for循环:for循环是在⼀个集合(列表或元组)中进⾏迭代,或者就是⼀个 迭代器。for循环的标准语法是:
for value in collection:
#do something with value
continue:你可以用continue使for循环提前,跳过当前语句剩下的部分。以下代码运行结果10.
array=[1,2,3,None,4]
num = 0
for a in array:
if a is None :
continue
num += a
print(num)
break:可以用break跳出for循环,以下代码运行结果是6.
array=[1,2,3,None,4]
num = 0
for a in array:
if a is None :
break
num += a
print(num)
While循环:while循环指定了条件和代码,当条件为False或⽤break退出循环。
pass:pass是Python中的非操作语句。代码块不需要任何动作时可以使用(作为未执行代码的占位符);因为Python需要使用空白字符划定代码块,所以需要pass。
range:range函数返回⼀个迭代器,它产⽣⼀个均匀分布的整数序列,range的三个参数是(起点,终点,步进)(返回不含终点):
[in]:list(range(10))
[out]:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]