python 19 函式 我的地盤聽我的

2021-08-18 08:15:19 字數 3097 閱讀 4881

1.函式與過程

函式:有返回值

過程:簡單的、特殊的、沒有返回值

python只有函式沒有過程

2.再談返回值

>>> def back():

return [1,'wo',3.14]

>>> back()

[1, 'wo', 3.14]

>>> def back():

return 1,3.14,'小甲魚'

>>> back()

(1, 3.14, '小甲魚')這裡是返回了個元組。

3.函式變數的作用域(變數的可見性)

在函式裡面定義的變數是區域性變數,被儲存在棧裡

全域性變數作用域是整個**段

def discounts(price,rate):

final_price=price*rate

print('這裡試圖列印全域性變數old_price的值:',old_price)

return final_price

old_price=float(input('請輸入原價:'))

rate=float(input('請輸入折扣率:'))

new_price=discounts(old_price,rate)

print('打折後的**是:',new_price)

請輸入原價:100

請輸入折扣率:0.8

這裡試圖列印全域性變數old_price的值: 100.0

打折後的**是: 80.0

4.在函式內,去修改全域性變數的時候,會建立乙個新的名字一樣的區域性變數,但是外部的全域性變數不變。因為兩個變數儲存的空間不一樣。

可以在函式內部去使用它,但是不要試圖去修改他。

def discounts(price,rate):

final_price=price*rate

# print('這裡試圖列印全域性變數old_price的值:',old_price)

old_price=50

print('修改後的全域性變數1:',old_price)

return final_price

old_price=float(input('請輸入原價:'))

rate=float(input('請輸入折扣率:'))

new_price=discounts(old_price,rate)

print('修改後的全域性變數為2:',old_price)

print('打折後的**是:',new_price)

請輸入原價:100

請輸入折扣率:0.8

修改後的全域性變數1: 50

修改後的全域性變數為2: 100.0

打折後的**是: 80.0

def

next

():

print('我在next()函式裡...')

pre()

defpre():

print('我在pre()函式裡...')

next()

def

hello

():

print('hello fishc!')

>>> def

myfun

():return

'測試測試', 520, 3.14, true

>>> myfun()

('測試測試', 520, 3.14, true)

>>> def

myfun2

():return ['小甲魚', 1314, 5.12, false]

>>> myfun2()

['小甲魚', 1314, 5.12, false]

>>>

def

fun(var):

var = 1314

print(var, end='')

var = 520

fun(var)

print(var)

小甲魚建議不到萬不得已不要使用全域性變數,簡潔的概括為: 

a) **可讀性變差  

b) **安全性降低以下關於全域性變數的危言聳聽是轉來的,大家不妨也看下:  

a) 它會造成不必要的常量頻繁使用,特別當這個常量沒有用巨集定義「正名」時,**閱讀起來將萬分吃力。  

b) 它會導致軟體分層的不合理,全域性變數相當於一條快捷通道,它容易使程式設計師模糊了「裝置層」和「應用層」之間的邊界。寫出來的底層程式容易自作多情地關注起上層的應用。這在軟體系統的構建初期的確效率很高,功能除錯進度一日千里,但到了後期往往bug一堆,處處「補丁」,雷區遍布。說是度日如年舉步維艱也不為過。  

c) 由於軟體的分層不合理,到了後期維護,哪怕僅是增加修改刪除小功能,往往要從上到下掘地三尺地修改,涉及大多數模組,而原有的**注釋卻忘了更新修改,這個時候,交給後來維護者的系統會越來越像乙個「泥潭」,注釋的唯一作用只是使泥潭上方再加一些迷煙瘴氣。  

d) 全域性變數大量使用,少不了有些變數流連忘返於中斷與主迴圈程式之間。這個時候如果處理不當,系統的bug就是隨機出現的,無規律的,這時候初步顯示出病入膏肓的特徵來了,沒有大牛來力挽狂瀾,注定慢性死亡。 

e) 無需多言,如果您的系統中大量使用全域性變數,那麼您已經成功得到乙個畸形的系統,它處於乙個神秘的穩定狀態!你看著這台機器,機器也看著你,相對無言,心中發毛。你不確定它什麼時候會崩潰,也不曉得下一次投訴什麼時候道理。

def huiwen():

str1=input('請輸入一句話:')

length=len(str1)

length1=length//2

for i in range(length):

if str1[i]==str1[length-i-1]:

#if str1[i]==str1[length1-i-1]:

#print('%s不是回文聯!'%str1)

#break

#else:

print('%s是回文聯!'%str1)

break

else:

print('%s不是回文聯!'%str1)

break

L19函式 我的地盤聽我的

函式function有返回值 過程procedure簡單的特殊的沒有返回值 python嚴格來說只有函式沒有過程 def hello print hello temp hello hello temp print temp none 就算hello 沒有寫return語句 python也返回至non...

第019講 函式 我的地盤聽我的

測試題 0.下邊程式會輸入什麼?def next print 我在next 函式裡.pre def pre print 我在pre 函式裡.next 結果 我在next 函式裡.我在pre 函式裡.有些程式語言不夠 聰明 向這類向前引用的方式會導致報錯,但python足夠 醒目 這段 是正確的!de...

第019講 函式 我的地盤聽我的

0.下邊程式會輸入什麼?def next print 我在next 函式裡.pre def pre print 我在pre 函式裡.next me 我在next 函式裡.我在pre 函式裡.1.請問以下這個函式有返回值嗎?def hello print hello fishc me 有。none 2...