python中如何持久性地保存一個變數值,使得下次運行程序後不至於該變數又恢復為默認值

不行,list存放的數據是在內存里的,程序一旦結束,這個list就會被釋放,裡面存儲的數據也會隨之沒有。
要想做到再次打開還有的辦法有將數據存放在文本文件中,或存在小型資料庫中(比如sqlite)。

❷ 關於python帶默認值的參數只能放在後面的問題

第一個那個*x是*args的意思,就是任意個參數,C++里的 va_arg,...符號這種,python函數里可以有*args和**kwargs。
*args之後可專以隨便放有默認值的和沒有默認值的。
因為這之後的任何東西都得用」y=1「」z=1「這種來賦值。
比如說第一個函數,def fun(*x, y=4, z),我寫fun(1,2,3,4,5),這五個數全跑到*x里了。我想給y和z賦值必須要寫fun(1,2,3,4,5,y=6,z=7)。相當於z跟有默認值的那種也差不多了。所以規定可以把z放在*x後面的任何位置,包括y=4後面,它們的位置關系已經沒有用了。
規定def fun(x=4, y) y必須放在x前,就是要保留這種位置關系,要不我寫fun(1),你說這個1是給x的還是y的?就有了歧義。所以必須要有正確的位置關系。但是*x後面所有東西都是用參數名賦值的,屬位置關系不起作用了,所以可以任意順序了。
要理解規定背後的原因。同理,**kwargs放在最後,也是這個原因。消除歧義性。

❸ Python函數里的默認參數和關鍵字參數有什麼區別

#有默認參數
#定義默認參數
age
=
1,
gender
=
'm'
def
person(
name,
age
=
1,
gender='m'):
print
'name:
%s
age:
%d
gender:
%s'
%
(name,
age,
gender)
#這里只傳一個值給第一個參數which
is
name,
age

gender已經有默認值,
#就算不傳新值給
age
or
gender也沒問題
person('jacky')
#output
-->
name:
jacky
age:
1
gender:
m
#沒有默認參數
def
person(name,
age,
gender):
print
'name:
%s
age:
%d
gender:
%s'
%
(name,
age,
gender)
#
person('jacky')
<--
error,
3個參數只傳了一個值
#沒有默認參數,就一定要傳
n(total
參數)
個值給
function.
person('jacky',
19,
'm')
******************************************************
#關鍵字參數
#用上面第一個例子
person(
name,
age=1,
gender='m')
#用關鍵字給function傳值時,不雖要跟著順序來也沒問題
#就算
age

name
順序不同,
但因為是用關鍵字來傳值,所以沒問題
person(
age=18,
name='jacky')
#output
-->
name:
jacky
age:
18
gender:
'm'
person(
gender='f',
age=17,
name='ashley')
#output
-->
name:
ashley
age:
17
gender:
'f'
#
error,
沒用關鍵字去傳值
#
person(
20,
'm',
'jacky')
<--
沒用關鍵字時,一定要按順序去傳值
i
tried
to
explain
as
clear
as
i
can....xp

❹ Python方法的幾種常見參數類型

  • 無默認值參數(關鍵字參數):

defmyfun(a):
print(a)

這是參數的最簡單形式。這個a就是無默認值參數。在調用函數時必需為無默認值參數指定值。

無默認值參數可以通過兩種方式來指定值:

#按參數定義順序不指名傳遞值
myfun('/src/image')

#無視定義順序,通過關鍵字指定值
myfun(a='/src/image')

無默認值參數在函數內部使用關鍵字作為變數名來訪問

無默認值參數可以有多個,也是一些其它參數類型的基礎。

  • 默認值參數:

如果在定義時為參數指定一個默認值,那麼,這個參數就可以在調用時不指定值:

defmyfun(a=''):
print(a)


#不為a指定值
myfun()

#按定義順序為a指定值
myfun('/src/lib')

#通過關鍵字為a指定值
myfun(a='/src/lib')

在定義時,所有默認值參數只能出現在所有無默認值參數之後,也就是說,在函數的定義中,要先定義無默認值參數,再定義默認值參數。

  • 不定長參數:

在參數名之前添加一個*號,則該參數稱為不定長參數。一個函數只可以有一個不定長參數。不定長參數的定義位置沒有限制,它可以定義在無默認值參數之間,也可以定義在默認值參數之後,或者它們之間的任何一個位置。

在調用時,不定長參數之後定義的無前兩種類型的參數就只能使用關鍵字來指定值了。

不定長參數在函數內部被處理為一個tuple。

def_max(*e,base=9):
print('called"_max":')
print('e:',e)
print('base:',base)

#只向不定長參數傳遞了值
#輸出:
#called"_max":
#e:(3,4,5)
#base:9
_max(3,4,5)

#也向默認值參數base傳遞了值
#輸出:
#called"_max":
#e:(3,4)
#base:5
_max(3,4,base=5)

#直接通過一個元組傳遞不定長參數的值
#輸出:
#called"_max":
#e:(3,4)
#base:5
p=(3,4)
_max(*p,base=5)

#使用混合方式傳遞不定長參數
#輸出:
#called"_max":
#e:(3,4,5,6,7)
#base:10
p1=(3,4)
p2=(6,7)
_max(*p1,5,*p2,base=10)

調用函數時如果沒有為不定長參數指定值,將導入一個空元組。

  • 不定長關鍵字參數:

不定長關鍵字參數使用兩個星號作為前綴與其它類型的參數區分,它在函數內被導入為一個字典。調用時需要為不定長關鍵字參數給出約定的關鍵字名,賦值形式如同無默認值參數。

一般情況下,不定長參數是作為最後一個參數來定義。

defmyfun(**kw):
print(kw)

myfun(base=1,home='aaaa')

以上只是基本的調用方式,有些時候,可以有更有趣的調用方式,例如定義了一個既含無默認值參數也含默認值參數的函數:

defiter_dir(homedir,exts='*',includesubdir=False,monoinfile=False,
titlere='^[^^].*',textengine=default_textengine,
encode=None):

調用時也可以用這樣的方式來傳遞值:

kwgs={'homedir':'C:/Users/hunte/Documents/yun/阿瑟·C·克拉克',
'exts':'txt',
'includesubdir':True}
myiter=iter_dir(**kwgs)
forfileinmyiter:
pass

❺ python 函數參數沒有默認值怎麼表示

沒有默認值,你不設置就是了,如:
def GetLibraryGroup(name, groupKey='month', orderBy = 』name』):
上面的函數定義中,name沒有給默認值,其餘的都給了,調用時,相應的參數如果你不給值,那麼函數會以默認值來運行,比如
GetLibraryGroup('filetable'),這個調用沒有給groupKey,orderBy 兩個參數,但是函數定義時,給了默認的值,就相當於GetLibraryGroup('filetable','month',,』name』)了,當然如果你調用時給默認的參數賦了其他值,那麼以你的調用為准,如
GetLibraryGroup('filetable','year',,』createTime』),這個調用groupKey,orderBy兩個參數就會是你調用時給的'year',,』createTime』。

❻ python參數默認值 怎麼是tuple

參數傳遞的事了。rol("hello",*args)這裡面*args可以解壓,就是把列表打散,然後復制給函數,當然函數裡面也有回*args,所以又生成了一答個tuple。下面的輸出結果跟你的一樣。注意星號的用法。

❼ 關於python函數的默認參數,是只被設置一次,還是每次調用都被設置

如果是可變對象,只被設置一次
如果是不可變對象,每次都分配一個新的對象

❽ python中子類對父類初始化變數的賦值

1、使用self.x = x這樣來添加變數
2、對於父類的初始化參數,如果不寫,默認就使用父類無參的__init__方法
3、子類初始化父類參數B.__init__(self,aa,ab)
4、使用super(子類類型,子類對象).foo()調用父類方法

❾ python 為什麼默認參數不能放在必選參數前面

簡單來講就是會產生歧義。
不妨想一想,如果確實如你所說,有默認值的參數位於無默認值之前,則調用函數時就必須使用key=Value的形式,而不能使用直接送入Value的形式了。為了調用函數時可以更便捷地使用後者,而同時又不產生歧義,在定義函數時,無默認值參數就必須位於前面了。考慮到定義函數只要一次,調用函數可能是很多地方、很多人使用,定義函數時稍微注意點是可以理解的了。

❿ 在PYTHON中,如果一個函數的參數已經有默認值,如何才能知道調用該函數時是否傳

有默認值的參數,在調用時,如果該參數的實參與默認值相同,可以不傳。