之前写了关于买房,保险的文章。不过,我是程序猿呀,还是写一点工作相关的文章吧。不要那么“不务正业”,哈哈。在麻瓜编程上学习了下python,写一下学习笔记。
一、字符串的连接
使用加号:print('asdf'+'13')输出asdf13
这点与PHP有所相同
二. 2.x版本与3.x版本的区别:
2.x:print 1/2 输出0
3.x:print(1/2)输出0.5,相对于其他编程语言,如C语言。这样有所不同,在一些情况下更为方便,其他时候容易造成混淆。
2.x版本要实现,可以写为:print(1.00/2)输出0.5
这里没有规定变量的数据类型。常量为默认的数据类型,如这里的1和2为整数型,1.00为浮点型,从而导致输出不同。
Python的设计者认为这么做不符合Python简单明了的特性,于是乎就在Python2.2以及以后的版本中增加了一个算术运算符" // "来表示整数除法,返回不大于结果的一个最大的整数,而" / " 则单纯的表示浮点数除法,但是,为了折中,所有2.X版本中,也是为了向后兼容,如果要使用" // ",就必须加上一条语句:
from __future__ import division
一看到这句," / "就表示 浮点数除法,返回浮点结果;" // "表示整数除法。
三、函数的默认参数
def trapezoid_area(base_up,base_down,height=3):
return1/2*(base_up+base_down)*height
四、函数的默认参数的调用
默认参数
def trapezoid_area(base_up, base_down, height=3):
return1/2* (base_up + base_down) * height
print(trapezoid_area(1,2,4))
这样是可以的。
但是
print('a','aa','aaa',sep='\n')
print('a','aa','aaa','\n')
两者就是不同的,后一行语句中这里的'\n'会被当作普通的函数
defprint(self, *args, sep=' ', end='\n', file=None):# known special case of print
这是因为第二个参数是一个数组,无法判断结束
五、位置参数与关键词参数的混合传入调用
使用python 3.5.3测试的结果为:后面为关键词参数传入可以,但如果前面有关键词参数传入不可。
def trapezoid_area(base_up, base_down, height):
return1/2* (base_up + base_down) * height
print(trapezoid_area(base_up=1,2,3)) #不可,有错误
print(trapezoid_area(1,base_down=2,3))# 不可,有错误
print(trapezoid_area(1,2,height=3))# 可以
print(trapezoid_area(1,base_down=2,height=3))# 可以
六、判断:
print(1<2<3) #返回TRUE,感觉是(1< 2) && (2<3) 所得到的
print(1<2>3) #则返回FALSE
print('M' in "Magic") # 返回TRUE,字符串的包含
number =12;
print(number is 12) # 返回TRUE,等价与print(number ==12)
in是成员运算符;is是身份运算符;
in测试前者是否存在于in后面的集合中。
album=['Black Star','David Bowie',25,True] #列表或数组中可以包含不同的数据类型
album.append('new song')#向列表中添加元素
bool函数:判断是TRUE还是FALSE
bool(0)#False
bool([])#False
bool('')#False
bool(False)#False
bool(None)#False
七、循环
for every_letter in 'Hello world':
print(every_letter)
输出每个字符。使用了in关键词
for i in range(1,11):
print(str(i)+'+1=',i+1)
这与C语言语法不同,这里有range来表示连续的数字
八、数据结构
1. python有内置数据结构,有四种数据结构,分别是:列表、字典、元组、结合。
2. 列表:Weekday=['Monday','Tuesday','Wednesday','Thursday','Friday']
列表的特征:
(1. 列表中的每一个元素都是可变的;
(2. 列表中的元素是有序的,也就是说每一个元素都有一个位置;
(3. 列表可以容纳 Python 中的任何对象。
insert函数:在指定位置之前插入元素
3. 字典NASDAQ_code={'BIDU':'Baidu','SINA':'Sina','YOKU':'Youku'}
字典的特征总结如下:
(1. 字典中数据必须是以键值对的形式出现的;
(2. 逻辑上讲,键是不能重复的,而值可以重复;
(3. 字典中的键(key)是不可变的,也就是无法修改的;而值(value)是可变的,可修改的,可以是任何对象。
列表中插入多个元素是函数extend(),字典中插入多个元素是update()
4. 元组:letters=('a','b','c','d','e','f','g')
元组不可以修改,可以视为稳固版的列表
5. 集合不能被切片也不能被索引
a_set={1,2,3,4}
a_set.add(5) #集合的添加
a_set.discard(5) #集合的删除
6. enumerate 在字典上是枚举、列举的意思
7. strip函数
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
第二个参数为要删除的字符。调用的只能是一个字符串变量,而不能是列表或其他。如
words=['asdf ',' aa']
words.strip()是错误的
扩展:with语句
上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持该协议的对象要实现这两个方法。
上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了__enter__() 和 __exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,也可以通过直接调用其方法来使用。
运行时上下文(runtime context):由上下文管理器创建,通过上下文管理器的 __enter__() 和__exit__() 方法实现,__enter__() 方法在语句体执行之前进入运行时上下文,__exit__() 在语句体执行完后从运行时上下文退出。with 语句支持运行时上下文这一概念。
上下文表达式(Context Expression):with 语句中跟在关键字 with 之后的表达式,该表达式要返回一个上下文管理器对象。
语句体(with-body):with 语句包裹起来的代码块,在执行语句体之前会调用上下文管理器的 __enter__() 方法,执行完语句体之后会执行 __exit__() 方法。
九、第三方库
当你想搭建网站时,可以选择功能全面的 Django、轻量的 Flask 等 web 框架;当你想写一个小游戏的时候,可以使用 PyGame 框架;当你想做一个爬虫时,可以使用 Scrapy 框架;当你想做数据统计分析时,可以使用 Pandas 数据框架
可以在awesome-python这个网站上按照分类去寻找,上面收录了比较全面的第三方库。