筆記:
1、函數與過程:過程(procedure)是簡單的,特殊且沒有返回值的;函數(Function)有返回值
Python嚴格來說只有函數沒有過程
2、局部變量:在局部生效如在函數中定義的變量
3、全局變量:作用於整個模塊
函數內若試圖修改全局變量,Python會新建一個同名局部變量用於存儲修改值,原全局變量的值不變
測試題:
0. 下邊程序會輸入什么?
def next():
print('我在next()函數里...')
pre()
def pre():
print('我在pre()函數里...')
next()
我在next()函數里...
我在pre()函數里...
1. 請問以下這個函數有返回值嗎?
def hello():
print('Hello FishC!')
有。 會返回一個None的對象
如果沒有使用return語句指定返回值,Python也不是什么都不返回的,Ta會返回一個None對象,所以我們說Python所有的函數都有返回值。
2. 請問Python的return語句可以返回多個不同類型的值嗎?
可以,默認用逗號隔開,是以元祖的形式返回,你當然也可以用列表包含起來返回
3. 目測以下程序會打印什么內容:
def fun(var):
var = 1314
print(var, end='')
var = 520
fun(var)
print(var)
1314520
4. 目測以下程序會打印什么內容?
var = ' Hi '
def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
fun3(var)
return var
def fun3(var):
var = ' 小甲魚 '
print(fun1())
Baby I love you
- 小甲魚建議不到萬不得已不要使用全局變量,簡潔的概括為:
a) 代碼可讀性變差
b) 代碼安全性降低
以下關於全局變量的危言聳聽是轉來的,大家不妨也看下:
a) 它會造成不必要的常量頻繁使用,特別當這個常量沒有用宏定義“正名”時,代碼閱讀起來將萬分吃力。
b) 它會導致軟件分層的不合理,全局變量相當於一條快捷通道,它容易使程序員模糊了“設備層”和“應用層”之間的邊界。寫出來的底層程序容易自作多情地關注起上層的應用。這在軟件系統的構建初期的確效率很高,功能調試進度一日千里,但到了后期往往bug一堆,處處“補丁”,雷區遍布。說是度日如年舉步維艱也不為過。
c) 由於軟件的分層不合理,到了后期維護,哪怕僅是增加修改刪除小功能,往往要從上到下掘地三尺地修改,涉及大多數模塊,而原有的代碼注釋卻忘了更新修改,這個時候,交給后來維護者的系統會越來越像一個“泥潭”,注釋的唯一作用只是使泥潭上方再加一些迷煙瘴氣。
d) 全局變量大量使用,少不了有些變量流連忘返於中斷與主回圈程序之間。這個時候如果處理不當,系統的bug就是隨機出現的,無規律的,這時候初步顯示出病入膏肓的特征來了,沒有大牛來力挽狂瀾,注定慢性死亡。
e) 無需多言,如果您的系統中大量使用全局變量,那么您已經成功得到一個畸形的系統,它處於一個神秘的穩定狀態!你看着這台機器,機器也看着你,相對無言,心中發毛。你不確定它什么時候會崩潰,也不曉得下一次投訴什么時候道理。
動動手:
0. 編寫一個函數,判斷傳入的字符串參數是否為“回文聯”(回文聯即用回文形式寫成的對聯,既可順讀,也可倒讀。例如:上海自來水來自海上)

自己寫的:轉換成列表,進行列表對比
def hui():
x=input('jfkaljfds')
a = list(x)
b =a[:]
b.reverse()
if a ==b:
print('y')
else:
print('no')
print(hui())
def Huiwen():
str1 = input('請輸入一句話:')
length = len(str1)
length1 = length // 2
for i in range(length1):
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
Huiwen()
小甲魚:
def palindrome(string):
length = len(string)
last = length-1
length //= 2
flag = 1
for each in range(length):
if string[each] != string[last]:
flag = 0
last -= 1
if flag == 1:
return 1
else:
return 0
string = input('請輸入一句話:')
if palindrome(string) == 1:
print('是回文聯!')
else:
print('不是回文聯!')
1. 編寫一個函數,分別統計出傳入字符串參數(可能不只一個參數)的英文字母、空格、數字和其它字符的個數。

def count(*param):
length = len(param)
for i in range(length):
word = 0
num = 0
spa = 0
oth = 0
for j in param[i]:
if j.isalpha():
word += 1
elif j.isspace():
spa += 1
elif j.isdigit():
num += 1
else:
oth += 1
print ('第 %d 個字符串共有:英文字母 %d 個,數字 %d 個,空格 %d 個,其他字符 %d 個'
%(i+1,word,num,spa,oth))