python的open函式的file引數可以使用變數嗎

2021-04-12 18:04:30 字數 5755 閱讀 2358

1樓:匿名使用者

可以w = input('隨便寫個檔名:')

f = open('e:/' + w + '.txt' , 'w')

python 一個函式裡的變數可以被另一個函式使用嗎?

2樓:索秀珍尤畫

例如一個

函式內有一個變數i,怎麼在函式外或另一個函式中呼叫或更改它。新手學習,謝謝。

******************************

不能在函式外更改某函式裡的區域性變數,因為每當你例項化那個函式的時候,那個函式裡面的區域性變數也會被重新賦值,重新定義,談何更改呢?

這一個全部變數和區域性變數的問題,如果要實現樓主說的,必須使用全域性變數(類中的self):

***************=bianliang.py**********=

#coding:

utf-8i=

0#定義一個全域性變數i

defa():

'''列印出i的值

'''print

idef

b():

global

ia()

#呼叫a方法

print

i#列印ii=

1000

#重新賦值i

print

i#列印i

a()#再次呼叫a方法

b()******************************===

%python

bianliang.py00

1000

1000

這個py檔案裡面使用了一個全域性變數i,實現了a方法和b方法共用引數i

3樓:匿名使用者

prsdblogaffectedrowcount @packagetype,1350,@@rowcount

while @@rowcount>1

delete

from temp

output deleted.*

into temp_deleted

where operatetime > @currentdateexec prsdblogaffectedrowcountset rowcount 0

4樓:匿名使用者

global words轉全域性對

python 一個函式怎麼使用另一個函式內的變數

5樓:一豬之哀傷一

例如一個函式內有一個變數i,怎麼在函式外或另一個函式中呼叫或更改它。新手學習,謝謝。

******************************

不能在函式外更改某函式裡的區域性變數,因為每當你例項化那個函式的時候,那個函式裡面的區域性變數也會被重新賦值,重新定義,談何更改呢?

這一個全部變數和區域性變數的問題,如果要實現樓主說的,必須使用全域性變數(類中的self):

***************=bianliang.py**********=

#coding: utf-8

i = 0 #定義一個全域性變數i

def a():

'''列印出i的值

'''print i

def b():

global i

a() #呼叫a方法

print i #列印i

i = 1000 #重新賦值i

print i #列印i

a() #再次呼叫a方法

b()******************************===

%python bianliang.py00

1000

1000

這個py檔案裡面使用了一個全域性變數i,實現了a方法和b方法共用引數i

6樓:細雨搖琴

用閉包再來看看專業的解釋:閉包(closure)是詞法閉包(lexical closure)的簡稱,是引用了自由變數的函式。這個被引用的自由變數將和這個函式一同存在,即使已經離開了創造它的環境也不例外。

所以,有另一種說法認為閉包是由函式和與其相關的引用環境組合而成的實體。

def make_adder(addend):

def adder(augend):

return augend + addendreturn adder

p = make_adder(23)

q = make_adder(44)print p(100)print q(100)

執行結果:

123144

python使用open函式開啟檔案的常用模式

7樓:匿名使用者

要以讀檔案的模式開啟一個檔案物件,使用python內建的open()函式,傳入檔名和標示符:

f = open('/users/michael/test.txt', 'r')

標示符'r'表示讀,這樣,我們就成功地開啟了一個檔案。

如果檔案不存在,open()函式就會丟擲一個ioerror的錯誤,並且給出錯誤碼和詳細的資訊告訴你檔案不存在:

如果檔案開啟成功,接下來,呼叫read()方法可以一次讀取檔案的全部內容,python把內容讀到記憶體,用一個str物件表示:

最後一步是呼叫close()方法關閉檔案。檔案使用完畢後必須關閉,因為檔案物件會佔用作業系統的資源,並且作業系統同一時間能開啟的檔案數量也是有限的:

由於檔案讀寫時都有可能產生ioerror,一旦出錯,後面的f.close()就不會呼叫。所以,為了保證無論是否出錯都能正確地關閉檔案,我們可以使用try ...

finally來實現:

但是每次都這麼寫實在太繁瑣,所以,python引入了with語句來自動幫我們呼叫close()方法:

這和前面的try ... finally是一樣的,但是**更佳簡潔,並且不必呼叫f.close()方法。

呼叫read()會一次性讀取檔案的全部內容,如果檔案有10g,記憶體就爆了,所以,要保險起見,可以反覆呼叫read(size)方法,每次最多讀取size個位元組的內容。另外,呼叫readline()可以每次讀取一行內容,呼叫readlines()一次讀取所有內容並按行返回list。因此,要根據需要決定怎麼呼叫。

如果檔案很小,read()一次性讀取最方便;如果不能確定檔案大小,反覆呼叫read(size)比較保險;如果是配置檔案,呼叫readlines()最方便;

python 函式變數 引數怎麼使用

8樓:育知同創教育

剛學用python的時候,特別是看一些庫的原始碼時,經常會看到func(*args, **kwargs)這樣的函式定義,這個*和**讓人有點費解。其實只要把函式引數定義搞清楚了,就不難理解了。

先說說函式定義,我們都知道,下面的**定義了一個函式funca

def funca():

pass

顯然,函式funca沒有引數(同時啥也不幹:d)。

下面這個函式funcb就有兩個引數了,

def funcb(a, b):

print a

print b

呼叫的時候,我們需要使用函式名,加上圓括號擴起來的引數列表,比如 funcb(100, 99),執行結果是:

10099

很明顯,引數的順序和個數要和函式定義中一致,如果執行funcb(100),python會報錯的:

typeerror: funcb() takes exactly 2 arguments (1 given)

我們可以在函式定義中使用引數預設值,比如

def funcc(a, b=0):

print a

print b

在函式funcc的定義中,引數b有預設值,是一個可選引數,如果我們呼叫funcc(100),b會自動賦值為0。

ok,目前為止,我們要定義一個函式的時候,必須要預先定義這個函式需要多少個引數(或者說可以接受多少個引數)。一般情況下這是沒問題的,但是也有在定義函式的時候,不能知道引數個數的情況(想一想c語言裡的printf函式),在python裡,帶*的引數就是用來接受可變數量引數的。看一個例子

def funcd(a, b, *c):

print a

print b

print "length of c is: %d " % len(c)

print c

呼叫funcd(1, 2, 3, 4, 5, 6)結果是12

length of c is: 4

(3, 4, 5, 6)

我們看到,前面兩個引數被a、b接受了,剩下的4個引數,全部被c接受了,c在這裡是一個tuple。我們在呼叫funcd的時候,至少要傳遞2個引數,2個以上的引數,都放到c裡了,如果只有兩個引數,那麼c就是一個empty tuple。

好了,一顆星我們弄清楚了,下面輪到兩顆星。

上面的例子裡,呼叫函式的時候,傳遞的引數都是根據位置來跟函式定義裡的參數列匹配的,比如funcb(100, 99)和funcb(99, 100)的執行結果是不一樣的。在python裡,還支援一種用關鍵字引數(keyword argument)呼叫函式的辦法,也就是在呼叫函式的時候,明確指定引數值付給那個形參。比如還是上面的funcb(a, b),我們通過這兩種方式呼叫

funcb(a=100, b=99)

和funcb(b=99, a=100)

結果跟funcb(100, 99)都是一樣的,因為我們在使用關鍵字引數呼叫的時候,指定了把100賦值給a,99賦值給b。也就是說,關鍵字引數可以讓我們在呼叫函式的時候打亂引數傳遞的順序!

另外,在函式呼叫中,可以混合使用基於位置匹配的引數和關鍵字引數,前題是先給出固定位置的引數,比如

def funce(a, b, c):

print a

print b

print c

呼叫funce(100, 99, 98)和呼叫funce(100, c=98, b=99)的結果是一樣的。

好了,經過以上鋪墊,兩顆星總算可以出場了:

如果一個函式定義中的最後一個形參有 ** (雙星號)字首,所有正常形參之外的其他的關鍵字引數都將被放置在一個字典中傳遞給函式,比如:

def funcf(a, **b):

print a

for x in b:

print x + ": " + str(b[x])

呼叫funcf(100, c='你好', b=200),執行結果

100c: 你好

b: 200

大家可以看到,b是一個dict物件例項,它接受了關鍵字引數b和c。

python函式後面的引數可以跟例項化的物件是同一個嗎?引數可以單獨拿出來使用?

9樓:匿名使用者

沒有學過c的,

來都有這一類問題自

函式定義後,函式存入記憶體中的一個地址,你眼睛看到的foo,是一個函式名字,用來記載這個功能在哪,方便你用。你也可以給這個記憶體中的地址期其他名字,比如,fcc=foo,fxx=foo,都是指向同一個記憶體地址。

你傳入的fun,只是一個地址,你可以直接print(fun)看看是不是輸出一個記憶體地址。當你用fun()時,函式被呼叫執行了。

至於第二個問題,foo只是一個名字,前面我們說過了,函式名是一個記憶體地址,你肉眼看到的foo,具體在python裡面,它是一個指向這個地址的物件。具體字這個問題裡面,原作者是想解釋裝飾器的作用~你當然可以用foo之類的代替。但這樣就沒表達出裝飾器的作用了

瞭解下c的指標,程式的執行原理,這種問題就一眼就懂

python如何寫類似於內建函式open的

open函式返回了一個 檔案物件 該檔案物件包含了read的函式 模擬一下 class c object def init self,name self.name name def read self return self.name def myopen name return c name my...

文字用python的open怎麼不能操作啊

f open tmp hello w open 路徑 檔名,讀寫模式 讀寫模式 r只讀,r 讀寫,w新建 會覆蓋原有檔案 a追加,b二進位制檔案.常用模式 如 rb wb r b 等等 讀寫模式的型別有 ru 或 ua 以讀方式開啟,同時提供通用換行符支援 pep 278 w 以寫方式開啟,a 以追...

python最常用的內建函式,python內建函式

writer open copy tmp.log a encoding utf 8 以追加模式開啟tmp.log檔案,編碼為utf 8 writer.write 開始處理.寫入內容writer.write tile s author s size d summary s book writer.wr...