- 1、Python如何把一段代碼封裝起來重複使用
- 2、python 怎麼在一個函數中調用同一個函數兩次
- 3、怎樣讓python多次調用函數.讓函數返回的值相加
- 4、python一行代碼能否多次調用同一個列表
- 5、python用open打開文件讀寫,“w”會替換,“a”多次調用函數會重複
- 6、Python lock函數重複調用
你可以用類或者函數將其封裝一下,將需要後期變動的變量作為參數放在其中,可以使用默認值傳參。
舉個簡單函數和類的栗子:
# 函數封裝
def sum(a, b=3):
return a + b
# 類封裝
class S(object):
def __init__(self, a=2, b=3)
self.a = a
self.b = b
def sum(self):
return self.a + self.b
如果是同一包裡面,直接就可以使用,如果不是同一個包,那麼需要先import後,通過“包名.類名”才能使用。 下面是同一個包裡面的案例: def a(): print(1) def b(): a() print (2) b()
下面是一個例子,用 for 循環調用 10 次 test 函數,並把返回值加到 sum 變量中:
#coding=utf-8
def test(n):
return n + 1
sum = 0
# 使用 for 循環調用 10 次 test 函數
for i in range(10):
# 調用 test 函數,並將返回值加到 sum 中
sum = sum + test(i)
print(‘sum = ‘ + str(sum))
可以的
用一行代碼如何把列表裡的元素去重。
比如:
[python] view plain copy
a = [[1, 2, 3], [2, 3, 4], [4, 5], [1, 2, 3]]
需要的效果是最後得到1,2,3,4,5。
我腦子裡第一閃過的就是用set。
隨後試了一下,使用雙重列表推導式加set,可以輕鬆解決。
[python] view plain copy
set([val for i in a for val in i])
不了解雙重列表推導的同學,可以看我的上一篇博客:雙重列表推導式
解決問題後再思考一下,效率是否足夠高?
使用雙重列表推導式很顯然需要循環列表裡的每一個元素,最後才統一去重,如果這個列表很大的話,會不會出現
爆內存的情況?
其實set有一個update方法,效果是把不在set內的元素加入到set中。
就是說我們有個set,a = {1, 2, 3, 4, 5},然後set.update([1,2,6]),只有6會加入到a。
所以另一種方法就出現了:
[python] view plain copy
[b.update(val) for val in q]
當然這個不能一行解決了,要先b = set(),最後b也是{1, 2, 3, 4, 5}。
print語句print [expression (“,” expression)* [“,”]]print expression [(“,” expression)+ [“,”]][]表示可選項,*表示零次或多次重複,+表示至少一次重複。print是一種特殊的語句,它用於在stdout輸出字符串。print有多種使用形式:print xprint x,yprint x,y,print object, x, y第1行是print的最普通的形式。第2行用print一次輸出多個變量值,print會在變量之間自動加上一個”空格”。第3行與第2行的不同是在y的後面多了一個”,”,這個逗號用來阻止print在打印出x和y的值後,自動附加上一個“\n”字符。第4行,是一種輸出重定向的形式,也就是說把x和y的值輸出到object的write方法中,這同時也表明object必須有一個write方法。在python中,print語句其實只是一種簡寫形式,是下面這段程序的簡寫:import syssys.stdout.write(str(x) + ‘\n’)上面這兩行合起來就是“print x”這一句。可以看出,print是調用str()函數來產生字符串的,並且會在輸出的字符串後加上一個’\n’字符。由於print實際是上調用了stdout的write方法。程序員也可以把stdout賦為別的值,從面實現print的輸出重定向的功能。比如:import sysx=”I’m here!”fp=file(‘log.txt’,’a’)sys.stdout=fpprint x第4行改變了stdou的值,而且fp也是一個文件對象,有一個write方法。這一小段代碼的功能是把print的輸出全部以appand的模式寫到了文件log.txt中。在第4行之後的print語句,都是這種功能。現在假設要恢復print輸出到標準輸出的功能,那麼就需要讓stdout重新指向標準輸出,可以使用如下的方式:sys.stdout=sys.__stdout__在sys.__stdout__中保存有指向標準輸出的信息,通過這行代碼,print可以恢復為原來的功能。有時候要在這兩種模式之間換來換去,一會要輸出到文件中,一會要輸出到標準輸出中,通過改變sys.stdout的值可以實現,不過太麻煩,python提供了另外一種簡便的print語句形式,來解決這種需求:print object,x,y能過這個符號,可以實現輸出重定向到object,當然object必須有一個write方法。否則會出現AttributeError。注意,在這種print形式中,sys.stdout並沒有改變,也就是說在這之後的print語句,具有的還是標準功能。雖然print語句實際上sys.stdou.write(),但sys模塊的import工作並不需要程序員操心,python會自動處理。類似於print的輸出,當用內置函數raw_input([prompt])進行讀取操作時,實際上用的是sys.stdin.read()方法。也可以通過改變stdin的值來控制入操作。相應的也有一個sys.__stdin__用來保存標準輸入的信息。
解決重複調用。
反覆執行Python,Python如何使程序重複運行,Python的周期基本1主題=(\u201Clinux系統\u201D、\u201CMysql數據庫\u201D,\u201CPython語言\u201D)#定義一個元組,三個元素代表三個課程2=0#和定義變量num作為初始分數3我的主題:#元組中的每個元素分配給我,總共三次4’Please進入打印測試分數%s的%我#提示輸入分數,使用格式字符串函數,表示分數的名字我每次獲得的元素名稱,5分=%s意味着字符串輸入()#接收分數由用戶輸入,並將其分配給score6總和+=分數#把分數分配金額相當於金額=和+score7avg=和\/len(科目)#後跳出的for循環,計算平均值。
Python由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆於1990年代初設計,作為一門叫做ABC語言的替代品Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127035.html