表示一個功能,函數(shù)定義著是提供功能的人,函數(shù)調(diào)用者是使用功能的人。
創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)具備承接各種類型的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過10余年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。
print:打印功能,將括號中的內(nèi)容,顯示到終端。
將括號中的內(nèi)容顯示在控制臺.
input:輸入功能,從終端中獲取輸入的信息,存到程序變量當(dāng)中
作用:將用戶輸入的內(nèi)容賦值給變量
第一個字符必須是字母表中字母或下劃線 _ 。
標(biāo)識符的其他的部分由字母、數(shù)字和下劃線組成。
標(biāo)識符對大小寫敏感。
python最具特色的就是使用縮進(jìn)來表示代碼塊,不需要使用大括號 {} 。
縮進(jìn)的空格數(shù)是可變的,但是同一個代碼塊的語句必須包含相同的縮進(jìn)空格數(shù)。實(shí)例如下:
python函數(shù)的作用是:
1、函數(shù)其實(shí)是把某個功能的代碼封裝到一個代碼塊中,用來為某個重復(fù)使用的功能做調(diào)用的一個代碼塊,可以稱為一個函數(shù)的代碼封裝??梢栽谧远x函數(shù)的小括號中傳入多個參數(shù)。
2、形參:在定義函數(shù)時,小括號中的參數(shù)名稱。實(shí)參:在函數(shù)名稱的小括號中,傳入實(shí)際的值代替了形參的這個值。函數(shù)可以有返回值(使用return進(jìn)行返回),也可以沒有返回值。
3、形參可以當(dāng)做函數(shù)內(nèi)部的一個變量使用,往往只在函數(shù)內(nèi)部進(jìn)行使用,不影響函數(shù)外部的相同名稱的變量。
4、在函數(shù)內(nèi)部可以返回某個值。直接在函數(shù)內(nèi)部退出來,而不再繼續(xù)執(zhí)行函數(shù)下面的代碼。
更多關(guān)于python函數(shù)的作用,進(jìn)入:查看更多內(nèi)容
Python 有很多有用的內(nèi)置函數(shù), 但還是不能滿足程序員的需求, 所以需要 自定義函數(shù) 。
如何編寫 自定義函數(shù) , 需要用到 def語句, 函數(shù)名, 括號及參數(shù), 冒號, 函數(shù)說明,內(nèi)置縮進(jìn)編碼模塊,return 語句 , 其中有一些也可省略不寫,后面會慢慢介紹。
編寫函數(shù)不可或缺的元素, 一定都要寫。函數(shù)名盡量寫得簡單易懂。
一般是對函數(shù)的描述說明。
這是編寫具體的 操作命令 的地方, 如果還未想好如何編寫, 可以使用 pass 來占位,讓程序可以運(yùn)行起來,防止調(diào)試出錯。
參數(shù)放在最后講, 是因?yàn)檫@里面的東西還是很多的。首先看個例子。
如上的案例都是限制了參數(shù)個數(shù)的, 最多傳三個參數(shù) name/age/city , 但是如果有一些特例,需要傳多個參數(shù)怎么辦呢。 參數(shù)前面加個 * , 變成 可變參數(shù) 。
那如果想要傳多個包含名稱的參數(shù),例如a=1,b=2,c=3......,那該怎么寫呢。參數(shù)前面加個 ** , 變成 關(guān)鍵字參數(shù) 。
Python內(nèi)在的函數(shù)式功能
自Python 1.0起,Python就已具有了以上所列中的絕大多數(shù)特點(diǎn)。但是就象Python所具有的大多數(shù)特性一樣,這些特點(diǎn)出現(xiàn)在了一種混合了各種特性的語言 中。?和Python的OOP(面向?qū)ο缶幊蹋?特性非常象,你想用多少就用多少,剩下的都可以不管(直到你隨后需要用到它們?yōu)橹梗?。在Python 2.0中,加入了列表解析(list comprehensions)這個非常好用的”語法糖“。 盡管列表解析沒有添加什么新功能,但它讓很多舊功能看起來好了不少。
Python中函數(shù)式編程的基本要素包括functionsmap()、reduce()、filter()和lambda算子(operator)。 在Python 1.x中,apply()函數(shù)也可以非常方便地拿來將一個函數(shù)的列表返回值直接用于另外一個函數(shù)。Python 2.0為此提供了一個改進(jìn)后的語法。可能有點(diǎn)讓人驚奇,使用如此之少的函數(shù)(以及基本的算子)幾乎就足以寫出任何Python程序了;更加特別的是,幾乎 用不著什么執(zhí)行流程控制語句。
所有(if,elif,else,assert,try,except,finally,for,break,continue,while,def)這 些都都能通過僅僅使用函數(shù)式編程中的函數(shù)和算子就能以函數(shù)式編程的風(fēng)格處理好。盡管真正地在程序中完全排除使用所有流程控制命令可能只在想?yún)?加”Python混亂編程“大賽(可將Python代碼寫得跟Lisp代碼非常象)時才有意義,但這對理解函數(shù)式編程如何通過函數(shù)和遞歸表達(dá)流程控制很有 價(jià)值。
剔除流程控制語句
剔除練習(xí)首先要考慮的第一件事是,實(shí)際上,Python會對布爾表達(dá)式求值進(jìn)行“短路”處理。這就為我們提供了一個if/elif/else分支語句的表達(dá)式版(假設(shè)每個分支只調(diào)用一個函數(shù),不是這種情況時也很容易組織成重新安排成這種情況)。 這里給出怎么做:
對Python中的條件調(diào)用進(jìn)行短路處理
Python
# Normal statement-based flow control
if cond1:?? func1()
elif cond2: func2()
else:???????? func3()
# Equivalent "short circuit" expression
(cond1 and func1()) or (cond2 and func2()) or (func3())
# Example "short circuit" expression
x = 3
def pr(s): return s
(x==1 and pr('one')) or (x==2 and pr('two')) or (pr('other'))
'other'
x = 2
(x==1 and pr('one')) or (x==2 and pr('two')) or (pr('other'))
'two'
我們的表達(dá)式版本的條件調(diào)用看上去可能不算什么,更象是個小把戲;然而,如果我們注意到lambda算子必須返回一個表達(dá)式,這就更值得關(guān)注了。既然如我 們所示,表達(dá)式能夠通過短路包含一個條件判斷,那么,lambda表達(dá)式就是個完全通用的表達(dá)條件判斷返回值的手段了。我們來一個例子:
Python中短路的Lambda
Python
pr = lambda s:s
namenum = lambda x: (x==1 and pr("one")) \
....??????????????????or (x==2 and pr("two")) \
....??????????????????or (pr("other"))
namenum(1)
'one'
namenum(2)
'two'
namenum(3)
'other'
將函數(shù)作為具有首要地位的對象
前面的例子已經(jīng)表明了Python中函數(shù)具有首要地位,但有點(diǎn)委婉。當(dāng)我們用lambda操作創(chuàng)建一個函數(shù)對象時, 我們所得到的東西是完全通用的。就其本質(zhì)而言,我們可以將我們的對象同名字”pr”和”namenum”綁定到一起, 以完全相同的方式,我們也也完全可以將數(shù)字23或者字符串”spam” 同這些名字綁定到一起。但是,就象我們可以無需將其綁定到任何名字之上就能直接使用數(shù)字23(也就是說,它可以用作函數(shù)的參數(shù))一樣,我們也可以直接使用 我們使用lambda創(chuàng)建的函數(shù)對象,而無需將其綁定到任何名字之上。在Python中,函數(shù)就是另外一種我們能夠就像某種處理的值。
我們對具有首要地位的對象做的比較多的事情就是,將它們作為參數(shù)傳遞給函數(shù)式編程固有的函數(shù)map()、reduce()和filter()。這三個函數(shù)接受的第一個參數(shù)都是一個函數(shù)對象。
map()針對指定給它的一個或多個列表中每一項(xiàng)對應(yīng)的內(nèi)容,執(zhí)行一次作為參數(shù)傳遞給它的那個函數(shù) ,最后返回一個結(jié)果列表。
reduce()針對每個后繼項(xiàng)以及最后結(jié)果的累積結(jié)果,執(zhí)行一次作為參數(shù)傳遞給它的那個函數(shù);例如,reduce(lambda n,m:n*m, range(1,10))是求”10的階乘”的意思(換言之,將每一項(xiàng)和前面所得的乘積進(jìn)行相乘)
filter()使用那個作為參數(shù)傳遞給它的函數(shù),對一個列表中的所有項(xiàng)進(jìn)行”求值“,返回一個由所有能夠通過那個函數(shù)測試的項(xiàng)組成的經(jīng)過遴選后的列表。
我們經(jīng)常也會把函數(shù)對象傳遞給我們自己定義的函數(shù),不過一般情況下這些自定義的函數(shù)就是前文提及的內(nèi)建函數(shù)的某種形式的組合。
通過組合使用這三種函數(shù)式編程內(nèi)建的函數(shù), 能夠?qū)崿F(xiàn)范圍驚人的“執(zhí)行流程”操作(全都不用語句,僅僅使用表達(dá)式實(shí)現(xiàn))。
==================================
將列表傳遞給函數(shù)后,函數(shù)就能直接訪問其內(nèi)容
假設(shè)有一個用戶列表,要問候其中的每位用戶
將列表傳遞給函數(shù)后,函數(shù)就可對其進(jìn)行修改,在函數(shù)中對這個列表所做的任何修改都是永久性的
一家為用戶提交的設(shè)計(jì)制作3D打印模型的公司,需要打印的設(shè)計(jì)存儲在一個列表中,打印后轉(zhuǎn)移到另一個列表中。
有時候需要禁止函數(shù)修改列表,為解決這個問題,可想向函數(shù)傳遞列表的副本而不是元件;這樣函數(shù)所做的任何修改都只影響副本,不影響元件
有時候,預(yù)先布置的函數(shù)需要接受多少個實(shí)參,python允許函數(shù)從調(diào)用語句中手機(jī)任意數(shù)量的實(shí)參
一個制作披薩的寒素,它需要接受很多配料,但無法確定顧客要多少種配料,下面函數(shù)只有一個形參*toppings,不管調(diào)用語句提供了多少實(shí)參,這個形參都將他們統(tǒng)統(tǒng)收入囊中
如果要讓函數(shù)接受不同類型的實(shí)參,必須在函數(shù)定義中將接納任意數(shù)量實(shí)參的形參放在最后
python先匹配位置實(shí)參和關(guān)鍵字實(shí)參,再將余下的實(shí)參收集到最后一個形參中
如果前邊的函數(shù)還需要一個表示披薩尺寸的實(shí)參,必須將該形參放在*toppings的前面
有時候,需要接受任意數(shù)量的實(shí)參,但預(yù)先不知道傳遞給函數(shù)的會是射門楊的信息,再這種情況下,可將函數(shù)編寫成能夠接受任意數(shù)量的鍵-值對,調(diào)用語句提供了多少就接受多少
創(chuàng)建用戶簡介:你知道你將收到有關(guān)用戶的信息,但不確定會是什么樣的信息,在下面示例中,build_profile()接受名和姓,同時還接受任意數(shù)量的關(guān)鍵字實(shí)參
python的常用內(nèi)置函數(shù)
1.abs() 函數(shù)返回?cái)?shù)字的絕對值
abs(-40)=40
2. dict() 函數(shù)用于創(chuàng)建一個字典
dict()
{} ? ? ?#創(chuàng)建一個空字典類似于u={},字典的存取方式一般為key-value
例如u = {"username":"tom", ?"age":18}
3. help() 函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說明
help('math')查看math模塊的用處
a=[1,2,3,4]
help(a)查看列表list幫助信息
4.dir()獲得當(dāng)前模塊的屬性列表
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
5.min() 方法返回給定參數(shù)的最小值 /參數(shù)可以為序列
a=? min(10,20,30,40)
a
10
6. next() 返回迭代器的下一個項(xiàng)目
it = iter([1, 2, 3, 4, 5])
next(it)
1
next(it)
2
7. id() 函數(shù)用于獲取對象的內(nèi)存地址
a=12
id(a)
1550569552
8.enumerate() 函數(shù)用于將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。
a=["tom","marry","leblan"]
list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
9. oct() 函數(shù)將一個整數(shù)轉(zhuǎn)換成8進(jìn)制字符串
oct(15)
'0o17'
oct(10)
'0o12'
10. bin() 返回一個整數(shù) int 或者長整數(shù) long int 的二進(jìn)制表示
bin(10)
'0b1010'
bin(15)
'0b1111'
11.eval() 函數(shù)用來執(zhí)行一個字符串表達(dá)式,并返回表達(dá)式的值
eval('2+2')
4
12.int() 函數(shù)用于將一個字符串會數(shù)字轉(zhuǎn)換為整型
int(3)
3
int(3.6)
3
int(3.9)
3
int(4.0)
4
13.open() 函數(shù)用于打開一個文件,創(chuàng)建一個file對象,相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫
f=open('test.txt')
14.str() 函數(shù)將對象轉(zhuǎn)化為適于人閱讀的形式
str(3)
'3'
15. bool() 函數(shù)用于將給定參數(shù)轉(zhuǎn)換為布爾類型,如果沒有參數(shù),返回 False
bool()
False
bool(1)
True
bool(10)
True
bool(10.0)
True
16.isinstance() 函數(shù)來判斷一個對象是否是一個已知的類型
a=5
isinstance(a,int)
True
isinstance(a,str)
False
17. sum() 方法對系列進(jìn)行求和計(jì)算
sum([1,2,3],5)
11
sum([1,2,3])
6
18. super() 函數(shù)用于調(diào)用下一個父類(超類)并返回該父類實(shí)例的方法。super 是用來解決多重繼承問題的,直接用類名調(diào)用父類方法
class ? User(object):
? def__init__(self):
class Persons(User):
? ? ? ? super(Persons,self).__init__()
19. float() 函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)
float(1)
1.0
float(10)
10.0
20. iter() 函數(shù)用來生成迭代器
a=[1,2,3,4,5,6]
iter(a)
for i in iter(a):
... ? ? ? ? print(i)
...
1
2
3
4
5
6
21.tuple 函數(shù)將列表轉(zhuǎn)換為元組
a=[1,2,3,4,5,6]
tuple(a)
(1, 2, 3, 4, 5, 6)
22.len() 方法返回對象(字符、列表、元組等)長度或項(xiàng)目個數(shù)
s = "playbasketball"
len(s)
14
a=[1,2,3,4,5,6]
len(a)
6
23. property() 函數(shù)的作用是在新式類中返回屬性值
class User(object):
?def __init__(self,name):
? ? ? ? ? self.name = name
def get_name(self):
? ? ? ? ? return self.get_name
@property
?def name(self):
? ? ? ? ?return self_name
24.type() 函數(shù)返回對象的類型
25.list() 方法用于將元組轉(zhuǎn)換為列表
b=(1,2,3,4,5,6)
list(b)
[1, 2, 3, 4, 5, 6]
26.range() 函數(shù)可創(chuàng)建一個整數(shù)列表,一般用在 for 循環(huán)中
range(10)
range(0, 10)
range(10,20)
range(10, 20)
27. getattr() 函數(shù)用于返回一個對象屬性值
class w(object):
... ? ? ? ? ? ? s=5
...
a = w()
getattr(a,'s')
5
28. complex() 函數(shù)用于創(chuàng)建一個復(fù)數(shù)或者轉(zhuǎn)化一個字符串或數(shù)為復(fù)數(shù)。如果第一個參數(shù)為字符串,則不需要指定第二個參數(shù)
complex(1,2)
(1+2j)
complex(1)
(1+0j)
complex("1")
(1+0j)
29.max() 方法返回給定參數(shù)的最大值,參數(shù)可以為序列
b=(1,2,3,4,5,6)
max(b)
6
30. round() 方法返回浮點(diǎn)數(shù)x的四舍五入值
round(10.56)
11
round(10.45)
10
round(10.45,1)
10.4
round(10.56,1)
10.6
round(10.565,2)
10.56
31. delattr 函數(shù)用于刪除屬性
class Num(object):
...? ? a=1
...? ? b=2
...? ? c=3.
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
b= 2
print('c=',print1.c)
c= 3
delattr(Num,'b')
print('b=',print1.b)
Traceback (most recent call last):? File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
32. hash() 用于獲取取一個對象(字符串或者數(shù)值等)的哈希值
hash(2)
2
hash("tom")
-1675102375494872622
33. set() 函數(shù)創(chuàng)建一個無序不重復(fù)元素集,可進(jìn)行關(guān)系測試,刪除重復(fù)數(shù)據(jù),還可以計(jì)算交集、差集、并集等。
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}