常用快捷鍵:
1.三個單引號''' '''
'''
多行註釋
多行註釋......
'''
2. # 號
表示註釋當前行
3. ctrl + ?
選中一段代碼,批量註釋
4.ctrl + d
選中一行代碼,複製到下一行(相當於Sehll裏面得yy p)
5.shift+tab
選中一行或者多行代碼,使用shift+tab健表示向左縮進,使用tab健表示向右縮進
6.Python特有的單詞不能定義爲變量名,否則使用不了特定的功能
內建:由解釋器自動導入(提供基本功能),可以看作全局變量
一.變量與常量
1.1變量的定義:
1.變量名 python
2.賦值符號 =
3.值 666
當定義一個變量"python"時,Python解釋器會開闢一個內存空間存儲變量的值"666",用賦值符號"="來連接變量名與值 。
1.1.1、變量賦值 *_ 的用法
#列表壓縮
l=[1,2,3,4,5,6]
x,y,z,*_=l #給x,y,z三個變量賦值爲列表l的前3個值,其中"*_"表示第四位到之後的所有值
print(x,y,z)
>>:1 2 3
#列表壓縮
l=[1,2,3,4,5,6]
*_,x,y=l #給x,y2個變量賦值爲列表l的最後2個值,其中"*_"表示第一位到倒數第三位的值
print(x,y)
>>:5 6
1.1.2、把2個變量的值相互替換:
m=10
n=11
m,n=n,m #把m,n的值調換,即m=11,n=10
print(m,n)
>> :11 10
1.2內存釋放
1.2.1 引用計數與垃圾回收
1).python採用"引用計數"和"垃圾回收"兩種機制來管理內存。
2).引用計數通過記錄對象被引用的次數來管理對象。
3).對對象的引用都會使得引用計數加1,移除對對象的引用,引用計數則會減1,
4).當引用計數減爲0時,對象所佔的內存就會被釋放掉。
舉例:
python=666 ,當666這個值被python這個變量名給引用了,那麼666的引用計數就爲"1"
python=777,當777這個值被python這個變量名給引用了,那麼777的引用計數就爲"1"。變量名python引用的值變爲了777,那麼666就不再被變量名python所引用了,那麼666的引用計數就爲"0",此時666就會被垃圾回收掉,釋放內存。
1.3變量的特徵- 每定義一個變量都有3個特徵
id # 身份(一個變量在內存的位置) 一個內存地址對應唯一的一個id
type # 數據的類型
值 #打印一個變量的值:print(變量)
1.3.1 例子1:定義一個變量age,並打印變量的id type 值
age=18 #完全寫法 age=int(18)
print(id(age),type(age),age)
1584492544 <class 'int'> 18
那麼得出: id=1584492544 type=int age=18,[ age=18 等於 age=int(18) ]。
1.3.2 例子2:定義一個變量age,然後定義一個變量age1=age 並打印變量age與age1的id type 值
age=19
age1=age
print(id(age1),type(age1),age1)
print(id(age),type(age),age)
1584492544 <class 'int'> 18
1584492544 <class 'int'> 18
那麼得出:一個變量age1引用另外一個變量age時,變量(age與age1)的id type 和值都不會改變。
1.3.3 運算符
is 判斷id是否相同 #id相等的情況下值相等
== 判斷值是否相等 #值相等的情況下,id不一定相等
例子1:在python3.6交互式環境下,值相等,id不相等
age='name:szq age:18' #定義相同的值
age1='name:szq age:18' #定義相同的值
print(id(age1),id(age)) #打印id
2010123591408 2010123588656 #但是id不同
例子2:id相等,值相等
age=18
age1=age
print(id(age1),age1)
print(id(age),age)
print(age is age1)
1584492544 18
1584492544 18
True #爲True說明爲真
1.4 常量
1.4.1 常量:不變的量(值),但是常量的值也是可以改變的(常量的字符一般爲大寫,這是一個默認約定,不從語法角度約束)
常量的字符定義:
SZQ_AGE_IS=18 #字母全部大寫
二.基本運算符
2.1 算數運算
2.2 比較運算
2.3 賦值運算
記住一個:a=a+1 可以寫成 a+=1
a=a-1 可以寫成 a-=1
2.4 邏輯運算 and or not
and:左右兩邊同時成立,結果爲真,如果兩邊一個不成立,結果爲假
or:左右兩邊一個成立,結果爲真,如果兩邊都不成立,結果爲假
not:相反 #print(not 10 > 3) 得到:False
執行順序:從左往右依次執行 (先判斷左邊(一個整體),再判斷右邊(一個整體)) 如下例子:
print(10 < 3 or 3 < 5 and 3 < 2 and 3 > 1 )
執行的判斷順序:
1.第一個邏輯運算符爲or ,那麼 先判斷 10 < 3 ,如果不成立則判斷 3 < 5 and 3 < 2 and 3 > 1
2.在3 < 5 and 3 < 2 and 3 > 1的基礎上,第一個邏輯運算符爲and 那麼先判斷3 < 5,如果不成立則爲假,後面的3 < 2 and 3 > 1就不會在判斷了(第一個爲假則爲假)
2.5 補充 字符串也可以使用運算符,只能使用+和*
a='aaa'
b='bbb'
print(a + b)
print(a * 10)
print(b * 10)
aaabbb # a + b 得到的值(簡單理解:把2個字符串組合起來)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # a * 10 得到的值(簡單理解:字符串aaa*10,得到了30個aaa)
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb # a * 10 得到的值(簡單理解:字符串bbb*10,得到了30個bbb)
注意點:+ 只能接收同類型的數據,也就是字符串
三.與用戶交互 input - 默認接受字符串str類型,輸入其他類型的數據時,會報錯
num=input('pls input your num >>:')
print(num,type(num))
pls input your num >>:szq
szq <class 'str'> #input會把輸入的內容全部存爲字符串類型
例子1:指定變量的數據類型
age=input('pls input your age >>:')
print(age == 18)
print(type(age))
pls input your age >>:18
False
<class 'str'>
這裏雖然我輸入了數字18,但是做"age == 18"判斷時,顯示爲False,因爲18傳參給了age,但是input把輸入的數字18存爲了字符串類型,就相當於 '18' == 18 ,因爲字符串類型與整數類型無法做比較,所以顯示爲False
如何修改,能達到目的:定義字符串類型的值爲int(整數)類型
age=input('pls input your age >>:')
age=int(age) #這裏指定了無論傳參的內容爲什麼,都會被轉換爲整數類型
print(age == 18)
print(type(age))
pls input your age >>:18
True
<class 'int'> #這裏可以看到傳參的內容18的數據類型爲整數性
這裏也要注意一點,設定age=int(age)後,在輸入非整數類型的數據時會報錯
四.格式化輸出 %s - 是可以接收任意類型的數據
name=input('pls input your name >>:')
age=input('pls input your age >>:')
hoppy=input('pls input your hoppy >>:')
print('my name is %s my age is %s my hoppy is %s' %(name,age,hoppy)) #使用%s格式話輸出,在最後用%(name,age,hoppy)傳參
pls input your name >>:sudaa #接收變量name
pls input your age >>:18 #接收變量age
pls input your hoppy >>:read #接收變量hoppy
my name is sudaa my age is 18 my hoppy is read #輸出內容
注意點:print('my name is %s my age is %s my hoppy is %s' %(name,age,hoppy))
1.print裏面輸出的內容用引號引起來
2.格式話輸出%s,最後要用%(變量1,變量2,變量3),來對應前面的%s
3.格式話輸出%s,是可以接收任意類型的