Python是一种高级动态,完全面向对象的语言、函数、模块、数字、字符串都是对象,并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。
运算语句:表达式、函数调用和赋值
各种类型的数据对象,可以通过各种运算组织成复杂的表达式
调用函数或者对象,也可以返回数据,所有可调用的事务称为callable
调用函数或者对象,需要在其名称后加圆括号,如果有参数,写在圆括号里
不加圆括号的函数或者对象名称仅是表示自己,不是调用
将表达式或者调用返回值传递给变量进行引用,称为赋值
赋值语句的小技巧
〉级联赋值语句 x=y=z=1
〉多个变量分解赋值 a,b=['hello','world']
〉变量交换 a,b=b,a
〉自操作 i+=1 n*=45
控制流语句:条件if
〉条件语句
if <逻辑条件>:
<语句块>
elif <逻辑条件>:#可以多个elif
<语句块>
else: #仅1个
<语句块>
〉各种类型中某些值会自动被转换为False,其它值则是True:
None,0,0.0,'',[],(),{},set()
控制流语句:while循环
〉条件循环while
while <逻辑条件>:
<语句块>
break#跳出循环
continue#略过余下循环语句
<语句块>
else: #条件不满足退出循环,则执行<语句块>
控制流语句:for循环
〉迭代循环for:
for <变量> in <可迭代对象>:
<语句块>
break#跳出循环
continue#略过余下循环语句
else: #迭代完毕,则执行
<语句块>
〉可迭代对象有很多类型
像字符串、列表、元组、字典、集合等
也可以有后面提到的生成器、迭代器等
迭代的小技巧:zip()函数
〉由于for循环的迭代是对容器中的数据项进行枚举,但不带序号或下标
〉有时候我们需要数据项的序号
〉另外,有时我们需要并行迭代两组一一对应的数据项
〉使用zip()打包函数可以使代码更加简洁
〉zip(list1,list2,list3…)返回由每个列表对应位置的数据项构成元组的列表。
函数function
〉函数用来对具有明确功能的代码段命名,以便复用(reuse)
〉定义函数:def语句;
def <函数名> (<参数表>):
<缩进的代码段>
return<函数返回值>
〉调用函数:<函数名>(<参数>)
注意括号!
无返回值:<函数名>(<参数表>)
返回值赋值:v=<函数名>(<参数表>)
定义函数的参数:固定参数/可变参数
〉定义函数时,参数可以有两种;
〉一种是在参数表中写明参数名key的参数,固定了顺序和数量
deffunc(key1,key2,key3…):
deffunc(key1,key2=value2…):
〉一种是定义时还不知道会有多少参数传入的可变参数
deffunc(*args):#不带key的多个参数
deffunc(**kwargs):#key=val形式的多个参数
调用函数的参数:位置参数/关键字参数
〉调用函数时,可以传进两种参数
〉一种是没有名字的位置参数
func(arg1,arg2,arg3…)
会按照前后顺序对应到函数参数传入
〉一种是带key的关键字参数
func(key1=arg1,key2=arg2…)
由于指定了key,可以不按照顺序对应
〉如果混用,所有位置参数必须在前,关键字参数必须在后
函数小技巧:map()函数
〉有时候,需要对列表中每个元素做一个相同的处理,得到新列表
〉例如所有数据乘以3
〉例如所有字符串转换为整数
〉例如两个列表对应值相加
〉map(func,list1,list2….)
〉函数func有几个参数,后面跟几个列表
函数小技巧:匿名函数lambda
〉有时候,函数只用一次,其名称也就不重要,可以无需费神去def一个
〉Lambda表达式可以返回一个匿名函数
〉lambda<参数表>:<表达式>
Python引用扩展模块:import
〉import<模块>[as<别名>]
将模块中的函数等名称导入当前程序“命名空间”namespace
引用方法:<模块>.<名称>
〉dir(<名称>)函数
列出名称的属性
〉help(<名称>)函数
显示参考手册
〉from<模块>import<名称>
导入模块的部分名称
时间相关:calendar模块
〉跟日历相关的若干函数和类,可以生成文本形式的日历
〉calendar.calendar(<年>)
〉calendar.month(<年>,<月>)
返回多行字符串
〉calendar.isleap(<年>)
判别闰年
〉calendar.prmonth(<年>,<月>)
〉calendar.prcal(<年>)
时间相关:datetime模块
〉有4个主要的类
date处理年月日
time处理时分秒、毫秒
datetime处理日期加时间
timedelta处理时段(时间间隔)
〉常用函数/方法
datetime.date.today()
datetime.datetime.now()
datetime.datetime.isoformat()
〉两个时间相减就是timedelta
时间相关:time模块
〉time.time()浮点数表示的现在时间
从1970-1-10:0:0开始的秒数
〉time.struct_time结构化时间类
time.localtime(<纪元时间>)->结构
time.gmtime(<纪元时间>)->结构
time.mktime(<结构化时间>)->纪元时间
〉time.strftime(<格式>)表示格式化输出(结构化)时间
〉time.strptime(<字串>,<格式>)按照格式识别字串,返回时间
基本模块简介:算术
〉math:常用的算术函数、三角函数、幂指数等等
〉cmath:支持复数的math函数
〉decimal:十进制定点数
〉fractions:有理数,比例
〉random:随机数
random.randint(a,b)
random.randrange(start,stop,step)
〉statistics:一些统计函数