python知识点汇总_Python知识点总结大全(一)
python邏輯運(yùn)算符
1.成員
and or not
優(yōu)先級(jí):() > not > and > or
2.and
邏輯運(yùn)算符and,a andb,如果a和b都為True,則返回True,如果其中一個(gè)為False,返回False,簡言之:一假則假,全真則真
3.or
邏輯運(yùn)算符or,a or b, 如果a和b有一個(gè)為True,則返回True,如果全為False,返回False,簡言之:一真則真,全假則假
4.not
邏輯運(yùn)算符not,是結(jié)果的相反邏輯,比如 not 4>5為True
5.優(yōu)先級(jí)級(jí)別從上至下
運(yùn)算符
描述
**
指數(shù) (最高優(yōu)先級(jí))
~ + –
按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@)
* / % //
乘,除,取模和取整除
+ –
加法減法
>> ,<<
右移,左移運(yùn)算符
&
位 ‘AND’
^|
位運(yùn)算符
<= < > >=
比較運(yùn)算符
<> == !=
等于運(yùn)算符
= %= /= //= -= += *= **=
賦值運(yùn)算符
is, is not
身份運(yùn)算符
in, not in
成員運(yùn)算符
Not , and, or
邏輯運(yùn)算符
python 中else在while循環(huán)中的用法
else 可以在while和for循環(huán)中運(yùn)用,else和while或for搭配使用,不再是條件判斷的含義。而是當(dāng)while條件不成立時(shí),直接跳出while循環(huán),執(zhí)行else輸出如:
count = 0
while count > 12:
if True:
print('Yes')
break
count += 1
else:
print('No')
# 輸出
No
a = 0
while a < 6:
print('loop',a)
a = a + 1
else:
print('well done!')#沒有break的情況下,循環(huán)沒有被打斷
# 輸出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
well done!
a = 0
while a < 6:
print('loop', a)
a += 1
break # 有break的情況下,執(zhí)行一次循環(huán)中止了,這種情況下不是正常中止的,else代碼塊是不執(zhí)行的
else:
print('Well done!')
# 輸出
loop 0
總結(jié):else下的代碼塊在while循環(huán)正常執(zhí)行結(jié)束了之后就會(huì)執(zhí)行else代碼塊。否則,不執(zhí)行。
匿名函數(shù)
為了解決那些功能很簡單的需求而設(shè)計(jì)的一句話函數(shù)
語法:lambda 參數(shù)列表 : 表達(dá)式
說明:使用lambda關(guān)鍵字創(chuàng)建匿名函數(shù)。所謂匿名函數(shù),就是沒有名字的函數(shù)。匿名函數(shù)冒號(hào)后面的表達(dá)式有且只能有一個(gè),注意:是表達(dá)式,而不是語句。匿名函數(shù)自帶return,而return的結(jié)果就是表達(dá)式的計(jì)算后的結(jié)果。
通過對比匿名函數(shù)和普通函數(shù)來說明下lambda的用法
1.無參匿名函數(shù):
>>>t = lambda : True #分號(hào)前無任何參數(shù)
>>>t()
True
# 等價(jià)于
>>> def func(): return True
>>> func()
True
2.帶參數(shù)匿名函數(shù)
>>> lambda x: x**3 #一個(gè)參數(shù)
>>> lambda x,y,z:x+y+z #多個(gè)參數(shù)
>>> lambda x,y=3: x*y #允許參數(shù)存在默認(rèn)值
# 匿名函數(shù)調(diào)用
>>> c = lambda x,y,z: x*y*z
>>> c(2,3,4)
24
>>> c = lambda x,y=2: x+y #使用了默認(rèn)值
>>> c(10) #不輸?shù)脑?#xff0c;使用默認(rèn)值2
12
>>> a = lambda *z:z # *z返回的是一個(gè)元祖,即返回的是和參數(shù)一樣的類型
>>> a('Testing1','Testing2')
('Testing1', 'Testing2')
3.直接后面?zhèn)鬟f實(shí)參
>>> (lambda x,y: x if x> y else y)(101,102)
102
>>> (lambda x:x**2)(3)
9
# lambda返回的值,結(jié)合map,filter,reduce使用
>>> filter(lambda x:x%3==0,[1,2,3,4,5,6])
[3, 6]
# 等價(jià)于下面的列表推導(dǎo)式
>>> l = [x for x in [1,2,3,4,5,6] if x%3==0]
>>> l
[3, 6]
4.嵌套使用
# lambda嵌套到普通函數(shù)中,lambda函數(shù)本身做為return的值
>>> def increment(n):
return lambda x: x+n
>>> f=increment(4)
>>> f(2)
6
>>> def say():
title = 'Sir,'
action= lambda x: title + x
return action
>>> act = say()
>>> act('Smith!')
'Sir,Smith!'
5.大量例子
# 例01:字符串聯(lián)合,有默認(rèn)值,也可以x=(lambda...)這種格式
>>> x = (lambda x="Boo",y="Too",z="Zoo": x+y+z)
>>> x("Foo")
'FooTooZoo'
# 例02: 和列表聯(lián)合使用
>>> L = [lambda x:x**2,\
lambda x:x**3,\
lambda x:x**4]
>>> for f in L:
... print f(2)
...
4
8
16
# 也可以如下面這樣調(diào)用
>>> print L[0](3)
9
# 例03: 和字典結(jié)合使用
>>> key = 'B'
>>> dic = { 'A': lambda: 2*2,\
... 'B': lambda: 2*4,\
... 'C': lambda: 2*8}
>>> dic[key]()
8
# 例04: 求最小值
>>> lower = lambda x,y: x if x
>>> lower('aa','ab')
'aa'
# 例05: 和map及l(fā)ist聯(lián)合使用
>>> import sys
>>> showall = lambda x:list(map(sys.stdout.write,x))
>>> showall(['Jerry\n','Sherry\n','Alice\n'])
Jerry
Sherry
Alice
>>> showall(['Jerry','Sherry','Alice'])
JerrySherryAlice
#等價(jià)于下面
>>> showall = lambda x: [sys.stdout.write(line) for line in x]
>>> showall(('I\t','Love\t','You!'))
I Love You![None, None, None]
# 例06: 在Tkinter中定義內(nèi)聯(lián)的callback函數(shù)
import sys
from Tkinter import Button,mainloop
x = Button(text='Press me',
command=(lambda:sys.stdout.write('Hello,World\n')))
x.pack()
x.mainloop()
>>>
Hello,World!
Hello,World!
# 例07: lambda和map聯(lián)合使用,
>>> out = lambda *x: sys.stdout.write(' '.join(map(str,x)))
>>> out('This','is','a','book!\n')
This is a book!
# 例08: 判斷字符串是否以某個(gè)字母開頭
>>> print (lambda x: x.startswith('B'))('Bob')
True
>>> Names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
>>> B_Name= filter(lambda x: x.startswith('B'),Names)
>>> B_Name
['Bob', 'Barbara']
# 例09: lambda和map聯(lián)合使用
>>> squares = map(lambda x:x**2,range(5))
>>> squares
[0, 1, 4, 9, 16]
# 例10. lambda和map,filter聯(lián)合使用
>>> squares = map(lambda x:x**2,range(10))
>>> filters = filter(lambda x:x>5 and x<50,squares)
>>> filters
[9, 16, 25, 36, 49]
# 例11. lambda和sorted聯(lián)合使用
# 按death名單里面,按年齡來排序
# 匿名函數(shù)的值返回給key,進(jìn)來排序
>>> death = [ ('James',32),
('Alies',20),
('Wendy',25)]
>>> sorted(death,key=lambda age:age[1]) #按照第二個(gè)元素,索引為1排序
[('Alies', 20), ('Wendy', 25), ('James', 32)]
# 例12. lambda和reduce聯(lián)合使用
>>> L = [1,2,3,4]
>>> sum = reduce(lambda x,y:x+y,L)
>>> sum
10
# 例13. 求2-50之間的素?cái)?shù)
#素?cái)?shù):只能被1或被自己整除的數(shù)
>>> nums = range(2,50)
>>> for i in nums:
nums = filter(lambda x:x==i or x % i,nums)
>>> nums
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
# 例14. 求兩個(gè)列表元素的和
>>> a = [1,2,3,4]
>>> b = [5,6,7,8]
>>> map(lambda x,y:x+y, a,b)
[6, 8, 10, 12]
#例15. 求字符串每個(gè)單詞的長度
>>> sentence = "Welcome To Beijing!"
>>> words = sentence.split()
>>> lengths = map(lambda x:len(x),words)
>>> lengths
[7, 2, 8]
# 寫成一行:
>>> print map(lambda x:len(x),'Welcome To Beijing!'.split())
函數(shù)名的應(yīng)用、閉包
函數(shù)名可以作為一個(gè)變量,函數(shù)的參數(shù),函數(shù)的返回值,容器類類型的元素
1.作為一個(gè)變量
def func1():
print(666)
f1 = func1 # 這里函數(shù)名實(shí)際上是個(gè)變量,只是變量名改了而已
f2 = f1
>>>
f2()
666
2.作為函數(shù)的參數(shù)
def func2(x):
print(x)
print('===', x())
print(func2(func1)) # 把func1的地址作為func2的參數(shù),再執(zhí)行func2函數(shù)。
>>>
666
=== None
None
3.函數(shù)名作為返回值
def wraaper():
def inner():
print('inner ')
return inner
ret = wraaper()
ret()
>>>
inner
'''
此時(shí)執(zhí)行了inner()函數(shù),為什么執(zhí)行外部函數(shù)可以執(zhí)行內(nèi)嵌的函數(shù)呢,因?yàn)閞eturn了函數(shù)名,實(shí)際上形成了閉包。
4.閉包
當(dāng)return一個(gè)嵌入的函數(shù)名時(shí),在全局命名空間就可以直接找到該函數(shù)的地址,也就是可以執(zhí)行函數(shù),原理是在全局變量空間外層的函數(shù)的內(nèi)存地址指向了嵌入的函數(shù)的內(nèi)存地址。通常要執(zhí)行內(nèi)層的函數(shù)時(shí)必須執(zhí)行外層的函數(shù)才可以執(zhí)行內(nèi)嵌的函數(shù),當(dāng)外層函數(shù)return了內(nèi)嵌的函數(shù)名,實(shí)際上把內(nèi)嵌的函數(shù)地址放在外面了,就是告訴所有外部人,這就是我的地址,通過這個(gè)地址你們就可以找到我。
enumerate() 枚舉函數(shù)
enumerate(iterable, start =0)
返回一個(gè)枚舉對象,第一個(gè)參數(shù)必須是一個(gè)序列,一個(gè)迭代器,或者其他支持迭代的對象。用enumetate()利用iterator中next()的方法返回一個(gè)包含計(jì)數(shù)(默認(rèn)從0)開始的以及從迭代中獲得的值元組。
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>>print(tuple(enumerate(seasons)))
>>>print(list(enumerate(seasons, start=4))) # 從4開始數(shù)
((0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter'))
[(4, 'Spring'), (5, 'Summer'), (6, 'Fall'), (7, 'Winter')]
總結(jié)
以上是生活随笔為你收集整理的python知识点汇总_Python知识点总结大全(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机怎么投屏的?
- 下一篇: python怎样编写定时程序_Pytho