日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python基础语言法则_python语言基础3

發(fā)布時(shí)間:2025/3/12 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础语言法则_python语言基础3 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:python函數(shù)

是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼塊。以前使用過的一些Python提供的內(nèi)建函數(shù),如print()、max(4,18)、min(100,50)。當(dāng)然我們自己創(chuàng)建的函數(shù),叫做自定義函數(shù)。

①、代碼要遵循的原則:高內(nèi)聚,低耦合

模塊內(nèi)部之間的聯(lián)系,應(yīng)該非常緊密的

模塊與模塊之間的聯(lián)系,應(yīng)該盡量少

②、優(yōu)點(diǎn):

函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。

③、定義函數(shù)的場(chǎng)合:

凡是我們需要描述某個(gè)功能的時(shí)候,都將它定義為函數(shù)

④、函數(shù)定義規(guī)則:

函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào) ()。任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。 函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。

return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不寫return,相當(dāng)于返回 None。

⑤、定義函數(shù)格式:

def 函數(shù)名(參數(shù)列表):

函數(shù)體

函數(shù)調(diào)用:

函數(shù)不調(diào)用就不會(huì)執(zhí)行,調(diào)用函數(shù)通過函數(shù)名完成

⑥、建議:

函數(shù)的第一行語句,可以選擇性地使用文檔字符串,用于存放函數(shù)說明,函數(shù)定義時(shí),一個(gè)函數(shù)的功能要單一。

1、簡(jiǎn)單定義函數(shù)

#定義函數(shù)

def hello() :

print("Hello Python ...!")

#調(diào)用函數(shù) 函數(shù)不調(diào)用,不執(zhí)行

hello()

運(yùn)行結(jié)果:

Hello Python ...!

2、簡(jiǎn)單實(shí)現(xiàn)業(yè)務(wù)

#定義函數(shù),實(shí)現(xiàn)打印5行5列的*號(hào)

def print_tr() :

for i in range(5):

for j in range(5):

print("* ",end="")

print()

#調(diào)用

print_tr()

運(yùn)行結(jié)果:

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

3、在函數(shù)中,定義參數(shù)

函數(shù)是否需要未知數(shù)參與,需要可以用參數(shù)定義出來。

#計(jì)算兩個(gè)數(shù)之和

#2個(gè)數(shù)是未知數(shù),未知數(shù)相當(dāng)于python的參數(shù)

def add(a,b):

#print('{0}+{1}={2}'.format(a,b,a+b))

print('%s+%s=%s'%(a,b,a+b))

#調(diào)用

add(7,8)

運(yùn)行結(jié)果:

7+8=15

4、在函數(shù)中,指定返回值

return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方,不帶表達(dá)式的return相當(dāng)于返回None。

#調(diào)addCopy01()函數(shù),返回兩個(gè)數(shù)之和的值

def addCopy01(a,b):

return a+b

#調(diào)用

result = addCopy01(100,200)

print(result)

print('-------------------------------')

#return 直接結(jié)束函數(shù),'函數(shù)結(jié)束'提示,沒有輸出。

def test_method():

for i in range(10):

print(i)

return # return結(jié)束函數(shù) break結(jié)束循環(huán)

print('函數(shù)結(jié)束')

#調(diào)用

test_method()

運(yùn)行結(jié)果:

300

-------------------------------

0

5、參數(shù)類型

①、必需參數(shù)

必需參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。調(diào)用函數(shù),你必須傳入?yún)?shù),不然會(huì)出現(xiàn)語法錯(cuò)誤:

#必須傳入,2個(gè)參數(shù)

def addCopy01(a,b):

return a+b

#調(diào)用

addCopy01(100,200)

②、關(guān)鍵字參數(shù)

關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致:

#關(guān)鍵字參數(shù):

def printinfo(name, age):

print("名字: ", name)

print("年齡: ", age)

#調(diào)用

printinfo(age=50, name="張三")

運(yùn)行結(jié)果:

名字: 張三

年齡: 50

③、默認(rèn)參數(shù)

調(diào)用函數(shù)時(shí),如果沒有傳遞參數(shù),則會(huì)使用默認(rèn)參數(shù)。

#默認(rèn)參數(shù):

def printinfo(name, age=35):

print("名字: ", name)

print("年齡: ", age)

#調(diào)用

printinfo(name="張三",age=50)

print("------------------------")

printinfo(name="張三")

運(yùn)行結(jié)果:

名字: 張三

年齡: 50

------------------------

名字: 張三

年齡: 35

④、不定長(zhǎng)參數(shù)

有時(shí)可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。這些參數(shù)叫做不定長(zhǎng)參數(shù)。

加了星號(hào)(*)的參數(shù)名,會(huì)存放所有未命名的變量參數(shù)。如果在函數(shù)調(diào)用時(shí),沒有指定參數(shù),它就是一個(gè)空元組。

#查看不定長(zhǎng)參數(shù),傳入的值

def add2(a,*b):

print(a,end="")

print(b)

#調(diào)用

add2(1) #1()

add2(1,2) #1(2,)

add2(1,2,3) #1(2, 3)

print("------------------------")

#求和 [不限制幾個(gè)參數(shù)]

def add3(a,*b):

sum = 0

for i in b:

sum += i

return a+sum

#調(diào)用

print(add3(1))

print(add3(1,2))

print(add3(1,2,3))

運(yùn)行結(jié)果:

1()

1(2,)

1(2, 3)

------------------------

1

3

6

python 使用 lambda 來創(chuàng)建匿名函數(shù)。所謂匿名,意即不再使用 def 語句來定義一個(gè)函數(shù)。

①、lambda 函數(shù)的語法只包含一個(gè)語句

②、命名空間:python中存放變量名的空間或字典!

注意:

①、lambda 只是一個(gè)表達(dá)式,函數(shù)體比 def 簡(jiǎn)單很多。

②、 lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。

③、 lambda 函數(shù)擁有自己的命名空間,且不能訪問自己參數(shù)列表之外或全局命名空間里的參數(shù)。

sum = lambda a,b:a+b

print(sum(10,20))

運(yùn)行結(jié)果:

30

7、參數(shù)傳遞問題

①、對(duì)象是真實(shí)存在的數(shù)據(jù),類型屬于對(duì)象,變量是沒有類型的。

number = [1,2,3,4,5,6]

info = "Hello"

解釋:[1,2,3,4,5,6] 是 List 類型,“Hello” 是 String 類型,而變量number與info是沒有類型,它僅僅是一個(gè)對(duì)象的引用(一個(gè)指針),可以是指向 List 類型對(duì)象,也可以是指向 String 類型對(duì)象

②、可更改與不可更改對(duì)象

python 中一切都是對(duì)象,傳遞參數(shù)分為傳不可變對(duì)象和傳可變對(duì)象

python 中,string字符串,tuple元組,和numbers整數(shù),是不可更改的對(duì)象,而list列表,dict字典等則是可以修改的對(duì)象。

使用函數(shù)的時(shí)候,如果傳入?yún)?shù)是不可變的,那么參數(shù)里面對(duì)數(shù)據(jù)做的任何操作,都不會(huì)對(duì)函數(shù)外面的數(shù)據(jù)帶來影響。不可變類型:如fun(a),傳遞的只是a 的值,沒有影響a對(duì)象本身。比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個(gè)復(fù)制的新對(duì)象,不會(huì)影響 a 本身。

# 不可變類型參數(shù)傳遞

num = 1

def change(num):

num = 3 #沒有對(duì)num操作,重新定義了一個(gè)num

print(num)

change(num)

print(num) #不會(huì)影響函數(shù)外,num本身的值

print('----------------------')

# 返回值例外

num2 = 1

def change(num2):

print(num2) # 1

num2 = 3

return num2

num_result = change(num2)

print(num_result) #返回值例外 3

print(num2) #函數(shù)內(nèi)改變,不影響函數(shù)外的不可變對(duì)象 1

運(yùn)行結(jié)果:

3

1

----------------------

1

3

1

可變對(duì)象類型:如 fun(la),則是將 la 真正的傳過去,在函數(shù)內(nèi)部,修改后,fun外部的la也會(huì)受影響

list_num = [1,2]

def change(list_num):

list_num.append(3)

print(list_num) #[1, 2, 3]

change(list_num)

print(list_num) #[1, 2, 3]

運(yùn)行結(jié)果:

[1, 2, 3]

[1, 2, 3]

二:變量作用域

Python 中,程序的變量并不是在哪個(gè)位置都可以訪問的,訪問權(quán)限決定于這個(gè)變量是在哪里賦值的。變量的作用域決定了在哪一部分程序可以訪問哪個(gè)特定的變量名稱。

Python的作 用域一共有4種,從小到大分別是:

L (Local) 局部作用域

局部作用域,即函數(shù)中定義的變量

局部變量(只能在函數(shù)內(nèi)部使用)

E (Enclosing) 閉包函數(shù)外的函數(shù)中

嵌套的父級(jí)函數(shù)的局部作用域,即包含此函數(shù)的上級(jí)函數(shù)的局部作用域,但不是全局的;

G (Global) 全局作用域

全局變量,就是模塊(python文件)級(jí)別定義的變量;

定義在函數(shù)外的變量

B (Built-in) 內(nèi)建作用域

系統(tǒng)固定模塊里面的變量,比如int, bytearray等。

總結(jié):以 L –> E –> G –>B 的規(guī)則查找,即:在局部找不到,便會(huì)去局部外的局部找(例如閉包),再找不到就會(huì)去全局找,再者去內(nèi)建中找,內(nèi)建中找不到程序報(bào)錯(cuò)

name = str('張三') #python內(nèi)置的作用域 ->內(nèi)建作用域

y = 2 #全局 ->全局作用域

def outer():

a = 3 #閉包 -> 閉包

def inner():

b=2 #局部 ->局部作用域

print(a)

inner()

#print(b) #報(bào)錯(cuò)

outer()

#print(a) #報(bào)錯(cuò)

運(yùn)行結(jié)果:

3

1、作用域一

Python 中只有模塊(module),類(class)以及函數(shù)(def、lambda)才會(huì)引入新的作用域(有作用域的限制);其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會(huì)引入新的作用域的,也就是說這些語句內(nèi)定義的變量,外部也可以訪問。

# 實(shí)例中 msg 變量定義在 if 語句塊中,但外部還是可以訪問的。

if True:

msg = "ok"

print(msg)

# 實(shí)例中 msg 定義在函數(shù)中,則它就是局部變量,外部不能訪問:

def test():

msg_inner = 'ok'

# print(msg_inner) #報(bào)錯(cuò),無法訪問局部變量

運(yùn)行結(jié)果:

ok

2、作用域二

①、局部變量:定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,局部變量只能在其被聲明的函數(shù)內(nèi)部訪問。

②、全局變量:定義在函數(shù)外的擁有全局作用域, 全局變量可以在整個(gè)程序范圍內(nèi)訪問。

③、調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。

total = 0

def sumcopyt(arg1,arg2):

total= arg1+arg2

print("局部變量",total) # 結(jié)果是:3而不是0(以 L –> E –> G –>B 的先后規(guī)則查找)

return total

sumcopyt(1,2)

print('全局變量',total)

運(yùn)行結(jié)果:

局部變量 3

全局變量 0

3、作用域三

一個(gè)不在局部作用域里的變量默認(rèn)是只讀的,如果試圖為其綁定一個(gè)新的值,python認(rèn)為是在當(dāng)前的局部作用域里創(chuàng)建一個(gè)新的變量,也就是說在當(dāng)前局部作 用域中,如果直接使用外部作用域的變量,那么這個(gè)變量是只讀的,不能修改。

global:通過里面的操作,改變外面的值

name='50'

def change_name():

name='100'

print('局部變量的值:',name)

change_name()

print('全局變量的值:',name) #全局的變量,并沒有修改

print('--------------------------')

name2='50'

def change_name2():

#想讓局部的total和全局的total變?yōu)橥粋€(gè)total(通過里面的操作,改變外面的值)

global name2

name2='100'

print('局部變量的值:',name2)

change_name2()

print('全局變量的值:',name2) #全局的變量,已經(jīng)修改啦

運(yùn)行結(jié)果:

局部變量的值:100

全局變量的值:50

--------------------------

局部變量的值:100

全局變量的值:100

4、作用域四

如果要修改嵌套作用域即閉包函數(shù)(enclosing 作用域,外層非全局作用域)中的變量則需要nonlocal關(guān)鍵字

def method_01():

a = 1

def method_02():

nonlocal a

a=2

print(a)

method_02()

print(a)

method_01()

運(yùn)行結(jié)果:

2

2

三:Python內(nèi)置函數(shù)

為了提高程序員的開發(fā)效率,Python 提供了很多可以直接拿來用的函數(shù)。

內(nèi)容參考:http://www.runoob.com/python3/python3-built-in-functions.html

總結(jié)

以上是生活随笔為你收集整理的python基础语言法则_python语言基础3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。