1.三引號
多行注釋:
"""
第一行注釋
第二行注釋
第三行注釋
"""
跨多行字符串:
str ="""
how are you?
I'm fine.
thank you,and you?
me too!
"""
2.運(yùn)算符
//表示整除鬼雀,%求余數(shù),**乘方敛滋,floor向上取整寸爆,ceil向下取整
2*2
print(2*2)
foo = math.sqrt
foo(4)=2.0
3.輸出的格式化方法
format方法
age = 20
name = '海哥'
print('My name is {0} .I am {1} years old'.format(name,age))
print('My name is {name} .I am {age} years old'.format(age =age,name = name))
格式符
# 格式符是有多種
print('My name is %s.I am %d years old.' % ('海哥',20))
縮進(jìn)
python對縮進(jìn)格式很嚴(yán)格,縮進(jìn)不同層次則不同:縮進(jìn)用Tab或者4個空格來表示衩辟。
a = 5
# 行首有一個空格螟炫,會出錯
print(a)
# 正確寫法
print(a)
# 正確的格式
a = [1,2,3]
for i in a:
if i>=2:
print(i)
4.控制流
控制流語句有 if for while(需要在邏輯行的末尾加上:)
a = [1,2,3]
for i in a:
if i==1:
print("[1]這是",i)
elif i==2:
print("[2]這是",i)
else:
print("[3]這是",i)
## 輸出結(jié)果為
# [1]這是 1
# [2]這是 2
# [3]這是 3
5.函數(shù)
通過關(guān)鍵字 def 來定義
global語句
global語句用以申明x是一個全局變量
x = 50
def func():
global x
print('x is',x)
x = 2
print('x is',x)
func()
print('x is',x)
結(jié)果:
x is 50
x is 2
x is 2
關(guān)鍵字參數(shù)
函數(shù)的參數(shù)可以不一定要按順序賦予,可以根據(jù)關(guān)鍵字來指定值艺晴。
def func(a,b=4,c=10):
print("a=",a,"b=",b,"c=",c)
func(2,3,4)
func(b=3,a=6,c=3)
結(jié)果:
a= 2 b= 3 c= 4
a= 6 b= 3 c= 3
可變參數(shù)
可以讓函數(shù)有任意數(shù)量的變量昼钻,通過星號(*)實(shí)現(xiàn)。
當(dāng)我們聲明一個param的星號參數(shù)時封寞,從此處開始直到結(jié)束的所有位置參數(shù)都將被收集并匯集成一個稱為"param"的元組
類似地然评,當(dāng)我們聲明一個*param的雙星號參數(shù)時,從此處開始直至結(jié)束的所有關(guān)鍵參數(shù)都將收集并匯集成一個名為"param"的字典
def total(a=5,*numbers,**phonebook):
print("a=",a)
# 遍歷元組中的所有項(xiàng)目
for single_item in numbers:
print('第二個參數(shù):',single_item)
# 遍歷字典中的所有項(xiàng)目
for first_part,second_part in phonebook.items():
print('第三個參數(shù):',first_part,second_part)
total(10,1,2,3,4,JACK=1123,haige=123123)
結(jié)果:
a= 10
第二個參數(shù): 1
第二個參數(shù): 2
第二個參數(shù): 3
第二個參數(shù): 4
第三個參數(shù): JACK 1123
第三個參數(shù): haige 123123
DocStrings
首先要求是函數(shù)的第一行邏輯行的字符串開始狈究。(也可以是模塊或類)
利用'''三引號來規(guī)定
可以通過doc函數(shù)來獲取文檔字符串
通過這種方式碗淌,當(dāng)我們引用別人的包,別人的庫時抖锥,如果不清楚函數(shù)的使用亿眠,可以通過提供者自己寫的文檔字符串,快速查看說明使用磅废。
# DocStrings 文檔字符串
# 能夠幫助你更好記錄程序并讓其更容易理解
# 只能是函數(shù)的第一行邏輯行
def print_max(x,y):
'''Print the maximum of two numbers.
The two values must be integers.'''
x=int(x)
y=int(y)
if x>y:
print(x,'is max')
else:
print(y,'is max')
print_max(1,4.5)
print(print_max.__doc__)
結(jié)果:
4 is max
Print the maximum of two numbers.
The two values must be integers.
6.模塊
python的模塊真的太多太多纳像,太方便了。什么什么爬蟲拯勉,數(shù)據(jù)分析竟趾,可視化,機(jī)器學(xué)習(xí)用python語言學(xué)習(xí)很方便宫峦,就是因?yàn)閜ython的模塊化岔帽,讓我們其他用戶可以互相引用。
還可以使用C語言來撰寫Python模塊斗遏,在編譯后山卦,可以通過標(biāo)準(zhǔn)Python解釋器在自己的項(xiàng)目中使用它
模塊的種類
內(nèi)置模塊、第三方模塊诵次、自定義模塊
模塊的name
每個模塊都有自己的名稱
而在當(dāng)前運(yùn)行的py的name默認(rèn)為main
自然就引出我們平常開發(fā)時账蓉,調(diào)用函數(shù)時,得加多一句
當(dāng)我們寫一個模塊時逾一,而且為了測試而調(diào)用模塊下的函數(shù)铸本。這時候這個模塊有調(diào)用函數(shù)語句。
當(dāng)我們在一個py文件要調(diào)用這個模塊時遵堵,這時候我們的py文件就會自動執(zhí)行該模塊的調(diào)用語句箱玷。
那就很麻煩了怨规,因?yàn)槲覀兊哪康膬H僅是為了引入該模塊的方法。
所以為了開發(fā)的方便性锡足,我們每次開發(fā)項(xiàng)目時波丰,遇到調(diào)用方法時,加多以上的if語句舶得,這樣可以不斷方便被調(diào)用掰烟。
import 模塊名
from 模塊名 import 自己定義的變量名
if __name__ = '__main__'
包
包其實(shí)就是很多個模塊(py文件)組成的。
一個包含模塊與一個特殊的init.py文件的文件夾沐批。
7.數(shù)據(jù)結(jié)構(gòu)
序列
序列的三種形態(tài)——列表纫骑、元組、字符串
列表
列表用于保存一系列有序項(xiàng)目的集合九孩。類似于購買清單先馆,每件物品都單獨(dú)列一行,且按逗號隔開躺彬。
列表用方括號括起來煤墙,一旦創(chuàng)建了,可以添加顾患、移除番捂、搜索列表中的項(xiàng)目。
shoplist = ['banana','apple','water']
# 輸出數(shù)量
print('I have',len(shoplist),'items to purchase')
# 直接列表輸出
print('list output:',shoplist)
# 分別輸出
print('There items are:',end=' ')
for i in shoplist:
print(i,end=' ')
# 添加項(xiàng)目-
print('\nI alse have to buy phone:')
shoplist.append('phone')
print('list output:',shoplist)
# 刪除項(xiàng)目
print('I do not want to buy water')
del shoplist[2]
print('list output:',shoplist)
# 給項(xiàng)目排序
print('sort my list:')
shoplist.sort()
print('list output:',shoplist)
結(jié)果:
I have 3 items to purchase
list output: ['banana', 'apple', 'water']
There items are: banana apple water
I alse have to buy phone:
list output: ['banana', 'apple', 'water', 'phone']
I do not want to buy water
list output: ['banana', 'apple', 'phone']
sort my list:
list output: ['apple', 'banana', 'phone']
元組
用括號來定義江解,用于將多個對象保存到一起设预。
元組不能被編輯或更改。
相當(dāng)于不變的列表犁河。
字典
python用的比較多的數(shù)據(jù)類型鳖枕。它就像JSON數(shù)組。
字典就是一個地址簿桨螺,知道姓名就可以找到其地址宾符。分為keys(唯一)與value,一一對應(yīng)灭翔。
data_mail = {
'chen':'chen@qq.com',
'lihua':'lihua@163.com',
'haige':'2016@m.scnu.edu.cn'
}
# 根據(jù)key值找value
print("haige's mail is",data_mail['haige'])
# 添加一對鍵/值
data_mail['xiaoming']='xiaoming@126.com'
if 'xiaoming' in data_mail:
print('存在xiaoming')
# 刪除一對鍵/值
del data_mail['lihua']
if 'lihua' not in data_mail:
print('不存在lihua')
# 輸出當(dāng)前的字典總數(shù)量
print('numbers:',len(data_mail))
# 輸出全部
for name,mail in data_mail.items():
print('name is {} , mail is {}'.format(name,mail))
輸出:
haige's mail is 2016@m.scnu.edu.cn
存在xiaoming
不存在lihua
numbers: 3
name is chen , mail is chen@qq.com
name is haige , mail is 2016@m.scnu.edu.cn
name is xiaoming , mail is xiaoming@126.com
集合
集合是簡單對象的無序集合魏烫,當(dāng)集合中的項(xiàng)目存在比次序或出現(xiàn)次數(shù)重要時,我們就會用集合肝箱。
# 集合
bri= set(['china','USA','UK'])
print(bri)
print('china in bri is','china' in bri)
print('russia in bri is','russia' in bri)
bric = bri.copy()
print(bric)
bric.add('russia')
bric.remove('USA')
print('after doing something...\n',bric)
# 兩個集合的并集
print(bri & bric)
結(jié)果:
{'china', 'UK', 'USA'}
china in bri is True
russia in bri is False
{'china', 'UK', 'USA'}
after doing something...
{'china', 'russia', 'UK'}
{'china', 'UK'}
8.序列操作:索引哄褒、切片、相加煌张、相乘
索引從0開始:字面量可以直接索引呐赡,無需變量賦值。
元素切片,第一個索引包括骏融,第二個索引链嘀,不包括
即元素個數(shù)為前后相減萌狂,3:6,即取3個元素怀泊,分別為4,5,6
從頭開始[ : num];從尾開始[-num : ]
[:]取整個序列
numbers = [1,2,3,4,5,6,7,8,9,10]
numbers[3:6]
>[4,5,6]
numbers[0:1]
>[0]
numbers[-3:]
>[8,9,10]
步長茫藏、隱式、顯式
numbers[0:10:2]
>[1, 3, 5, 7, 9]
numbers[::4]
>[1, 5, 9]
numbers[::-2]
>[10, 8, 6, 4, 2]
9.list操作
1.修改-索引賦值
2.刪除-del/或者賦值為[]
3.切片賦值-number[2:] = ['a','b','c','d']
4.append-將對象附加到list末尾包个,對象可以是list或者單一值
5.clear-清空列表內(nèi)容類似lst[:]=[]刷允,取整個序列賦值為空
6.copy:可以發(fā)現(xiàn),普通操作會同時影響a碧囊;需要用到copy方法,
a = [1,2,3,4]
b = a
b[1] = 'k'
>a
[1,'k',3,4]
c = a.copy()
>c[0] = 20
>[20,2,3,4]
7.count-指定元素在list中出現(xiàn)的次數(shù)
8.extend-將值附加到list末尾
9.index-指定值第一次出現(xiàn)的索引
10.insert-將一個對象插入列表纤怒;插入一個位置糯而,并不會替換掉原值
11.pop-從list中刪除一個元素(默認(rèn)為最后一個),并返回該元素.棧stack-類似于一疊盤子,上面添加或者上面拿走(后進(jìn)先出LIFO-last in first out)
a = [1,2,3]
a.pop()
>3
a
>[1,2]
12.remove-刪除第一個為指定值的元素泊窘;與pop的區(qū)別就是不返回值
13.reverse-反轉(zhuǎn)元素(反向排序),reversed-反向迭代器
14.sort-就地排序熄驼,對原list做修改
>x = [2,1,4,9,6]
>y = x.sort()
>print(y)
None
會報錯,因?yàn)閤.sort()是對x進(jìn)行修改烘豹,并不返回值瓜贾,所以y是None
15.高級排序
sort()可以接受兩個參數(shù),key,reverse携悯。其中將key設(shè)置為不同的函數(shù)是很有用的祭芦。
x.sort(key=len)
x.sort(reverse = True)