A. python語言變數命名規則是什麼
python語言變數命名規則是只能包含字母、數字和下劃線。
變數名可以字母或下劃線開頭,但不能以數字開頭。例如可將變數命名為message_1,但不能將其命名為1_message。變數名不能包含空格,但可使用下劃線來分隔其中的單詞。
變數名greeting_message可行,但變數名greetingmessage會引發錯誤。不要將Python關鍵字和函數名用作變數名,即不要使用Python保留用於特殊用途的單詞,如print。變數名應既簡短又具有描述性。慎用小寫字母l和大寫字母O,因可能被人錯看成數字1和0。
應用領域:
1、圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
2、數學處理:NumPy擴展提供大量與許多標准數學庫的介面。
3、文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
以上內容參考:網路--變數
B. 淺談python中的變數賦值
在python中,變數賦值的語法比較簡單,語法就是 「變數名 = 對象」,由於python屬於動態語音,所以不需要像c、 java那樣在變數賦值時需要聲明變數的類型。
c 變數賦值
int x = 1;
python 變數賦值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 變數賦值中,所涉及到的變數命名是有一定規則的:
1. 變數名只能包含字母、數字和下劃線。變數名可以字母或下劃線開頭,但不能以數字開頭,例如,可將變數命名為name_1,但不能將其命名為1_name
2. 變數名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變數名name_one可行,但變數名name one會引發錯誤。
3. 不要將Python關鍵字和函數名用作變數名,即不要使用Python保留用於特殊用途的單詞,如not、pass等。
4. 變數名應既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 雖說簡短好,但是不能依照自己的意願隨意簡寫,盡量使用大家約定俗成的簡寫,如果不是還不如寫全拼。
5. python 變數名中大小寫敏感,所以 NAME, Name, name 代表三個不同的表裡名, 這里提一下就是慎用小寫字母l和大寫字母O,因給他們可能被人錯看成數字1和0;
再說變數賦值中賦予給變數的值,python中萬事皆對象,所以python中只要是對象就能給變數賦值。如:
x = 1 # x賦值為數字1;
x = sum # x賦值為內建求和函數sum;
python的賦值真實上說應該不是賦值,而更像是「引用」,如何理解「引用」呢,python中一直對象的生成是會在內存中分配給一個內存地址,這個內存地址可以使用id()方法去獲取,然後在變數賦值時,將變數直接引用該對象的內存地址,進而完成變數賦值,如:
x = 1, 賦值時x直接引用1所在內存的地址, y = x, 此時是y直接引用x的所指向的內存地址
python中有判斷變數的方法如 is() 和 ==,二者在判斷變數時是有區別的,is函數是判斷變數的內存地址是否相同,而 == 是判斷變數的值是否相同,舉例說明:
a = 1; b = 1.0
a is b # False
a == b # True
小心python變數賦值的陷阱
看到上面的所述知道了python變數賦值實則是引用,引用的是對象的內存地址。所賦的值可以分兩類,一類是可變的,如列表,字典,集合;一類是不可變的,如字元串、元組。所以當對象為可變類型時就會出現一種情景,我們舉例說明:
x = [1, 2, 3]
y = x
print x == y # True
print x is y # True
print x # [1, 2, 3]
print y # [1, 2, 3]
y.append(4)
print x # [1, 2, 3, 4]
print y # [1, 2, 3, 4]
可以看到y在進行調整時(添加了一個元素),x也跟著變動了,這進一步說明了,python中的變數賦值時引用,x,y 賦值時指向了同一處內存地址,所以當y變動時,x同樣也發送了變化,解決這中現象的方法可以是x, y = [1,2,3], [1,2,3]這樣賦值,雖說此時 x==y 是True,但是確實是2個不同的內存地址,所以 x is y 則是 False。或者可以使用模塊,實質是相同的,創建2個不同的內存地址,使其分離。
C. Python函數及變數的定義和使用
def <函數名>():
<函數體>
return <返回值>
def <函數名>(非可選參數,可選參數):
<函數體>
return <返回值>
def <函數名>(參數,*b):
<函數體>
return <返回值>
<函數名> = lambda <參數> : <表達式>
例1:f = lambda x , y : x + y
調用:f(6 + 8) 輸出:14
例2: f = lambda : "沒有參數的lambda函數!"
調用: print(f()) 輸出: 沒有參數的lambda函數!
D. 如何用python動態生成變數名字
你好,方法如下:
要寫一個程序,讓linuxany1=1,linuxany2=2,… inuxany100=100,你會怎麼做?
最容易想到的自然是eval,但是實際上根本不需要這種危險的東西,因為Python的變數名就是一個字典的key而已。要獲取這個字典,直接用locals和globals函數即可。
>>> names = locals()
>>> for i in xrange(1, 101):
... names['linuxany%s' % i] = i
... >>> linuxany1
1 >>> linuxany2
2 >>> linuxany100
100
不過你也許會說這個例子沒什麼用,畢竟用數組來實現更為實用。
舉一個例子:伺服器使用一種對象資料庫,可以直接保存對象到資料庫中。伺服器列出目前支持的所有類,而用戶想添加一個不存在於列表中的類,於是向伺服器發送一段JSON或XML文本。伺服器解析這段文本,將它轉換成一個class對象,並且設置類名。之後用戶就可以隨意生成這個類的對象。
關鍵是這個資料庫和類名相關,你不能用一個通用的Object類來保存所有的對象,否則查詢時就亂套了。
除了動態設置變數名,動態刪除也是可以的,例如
del locals()['linuxany1']
同樣,delattr也是可用的。
希望能幫到你。
E. Python的函數都有哪些
Python 函數
函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。
函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。
定義一個函數
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。
任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。
函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
函數內容以冒號起始,並且縮進。
return [表達式]結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。
語法
def functionname( parameters ): "函數_文檔字元串"
function_suite
return [expression]
默認情況下,參數值和參數名稱是按函數聲明中定義的順序匹配起來的。
實例
以下為一個簡單的Python函數,它將一個字元串作為傳入參數,再列印到標准顯示設備上。
實例(Python 2.0+)
def printme( str ): "列印傳入的字元串到標准顯示設備上"
print str
return
函數調用
定義一個函數只給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。
這個函數的基本結構完成以後,你可以通過另一個函數調用執行,也可以直接從Python提示符執行。
如下實例調用了printme()函數:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定義函數def printme( str ): "列印任何傳入的字元串"
print str
return
# 調用函數printme("我要調用用戶自定義函數!")printme("再次調用同一函數")
以上實例輸出結果:
參數傳遞
在 python 中,類型屬於對象,變數是沒有類型的:
a=[1,2,3]
a="Runoob"
以上代碼中,[1,2,3]是 List 類型,"Runoob"是 String 類型,而變數 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。
可更改(mutable)與不可更改(immutable)對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
不可變類型:變數賦值a=5後再賦值a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。
可變類型:變數賦值la=[1,2,3,4]後再賦值la[2]=5則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 函數的參數傳遞:
不可變類型:類似 c++ 的值傳遞,如 整數、字元串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身。
可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響
python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。
python 傳不可變對象實例
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
def ChangeInt( a ): a = 10
b = 2ChangeInt(b)print b # 結果是 2
實例中有 int 對象 2,指向它的變數是 b,在傳遞給 ChangeInt 函數時,按傳值的方式復制了變數 b,a 和 b 都指向了同一個 Int 對象,在 a=10 時,則新生成一個 int 值對象 10,並讓 a 指向它。
傳可變對象實例
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def changeme( mylist ): "修改傳入的列表"
mylist.append([1,2,3,4])
print "函數內取值: ", mylist
return
# 調用changeme函數mylist = [10,20,30]changeme( mylist )print "函數外取值: ", mylist
實例中傳入函數的和在末尾添加新內容的對象用的是同一個引用,故輸出結果如下:
參數
以下是調用函數時可使用的正式參數類型:
必備參數
關鍵字參數
默認參數
不定長參數
必備參數
必備參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
調用printme()函數,你必須傳入一個參數,不然會出現語法錯誤:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printme( str ): "列印任何傳入的字元串"
print str
return
#調用printme函數printme()
以上實例輸出結果:
關鍵字參數
關鍵字參數和函數調用關系緊密,函數調用使用關鍵字參數來確定傳入的參數值。
使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。
以下實例在函數 printme() 調用時使用參數名:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printme( str ): "列印任何傳入的字元串"
print str
return
#調用printme函數printme( str = "My string")
以上實例輸出結果:
下例能將關鍵字參數順序不重要展示得更清楚:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printinfo( name, age ): "列印任何傳入的字元串"
print "Name: ", name
print "Age ", age
return
#調用printinfo函數printinfo( age=50, name="miki" )
以上實例輸出結果:
默認參數
調用函數時,默認參數的值如果沒有傳入,則被認為是默認值。下例會列印默認的age,如果age沒有被傳入:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printinfo( name, age = 35 ): "列印任何傳入的字元串"
print "Name: ", name
print "Age ", age
return
#調用printinfo函數printinfo( age=50, name="miki" )printinfo( name="miki" )
以上實例輸出結果:
不定長參數
你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述2種參數不同,聲明時不會命名。基本語法如下:
def functionname([formal_args,] *var_args_tuple ): "函數_文檔字元串"
function_suite
return [expression]
加了星號(*)的變數名會存放所有未命名的變數參數。不定長參數實例如下:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def printinfo( arg1, *vartuple ): "列印任何傳入的參數"
print "輸出: "
print arg1
for var in vartuple: print var
return
# 調用printinfo 函數printinfo( 10 )printinfo( 70, 60, 50 )
以上實例輸出結果:
匿名函數
python 使用 lambda 來創建匿名函數。
lambda只是一個表達式,函數體比def簡單很多。
lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
lambda函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間里的參數。
雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。
語法
lambda函數的語法只包含一個語句,如下:
如下實例:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明sum = lambda arg1, arg2: arg1 + arg2
# 調用sum函數print "相加後的值為 : ", sum( 10, 20 )print "相加後的值為 : ", sum( 20, 20 )
以上實例輸出結果:
return 語句
return語句[表達式]退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。之前的例子都沒有示範如何返回數值,下例便告訴你怎麼做:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def sum( arg1, arg2 ): # 返回2個參數的和."
total = arg1 + arg2
print "函數內 : ", total
return total
# 調用sum函數total = sum( 10, 20 )
以上實例輸出結果:
變數作用域
一個程序的所有的變數並不是在哪個位置都可以訪問的。訪問許可權決定於這個變數是在哪裡賦值的。
全局變數
局部變數
全局變數和局部變數
定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全局作用域。
局部變數只能在其被聲明的函數內部訪問,而全局變數可以在整個程序范圍內訪問。調用函數時,所有在函數內聲明的變數名稱都將被加入到作用域中。如下實例:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
total = 0 # 這是一個全局變數# 可寫函數說明def sum( arg1, arg2 ): #返回2個參數的和."
total = arg1 + arg2 # total在這里是局部變數.
print "函數內是局部變數 : ", total
return total
#調用sum函數sum( 10, 20 )print "函數外是全局變數 : ", total
以上實例輸出結果:
F. 怎麼得到python里對自己引用的變數的名字
第一個問題答不上來,估計不行,不過如果a中加了類似鉤子的東西或許可以,如果是在同一個model中,倒是可以用list或dict來統一保存。
第二個問題,直接close就行了。。。
G. Python函數和模塊的定義與使用,包括變數的類型及匿名函數用法
函數是組織好,可重復使用的,用來實現相關功能的代碼段
函數提高了代碼的重復利用率和應用的模塊性。
除Python自帶的函數之外,也可以自己創建函數,叫做自定義函數
語法:
函數代碼塊以 def 開頭
參數為 輸入值 ,放於函數名後口號裡面,
函數內容以冒號:開始,函數體縮進, return 返回 輸出值
函數調用使用關鍵字參數來確定傳入的參數值,此時,如果多個函數則不需要按照指定順序。
在定義函數時,指定參數默認值。調用時如果不傳入參數,則使用默認值
不定長部分如果沒有指定參數,傳入是一個空元組
加了 兩個星號 ** 的參數會以字典的形式導入
/ 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式。
3.8版本之後的才能使用
不使用 def 定義函數,沒有函數名
lamdba主體時一個表達式,而不是代碼塊,函數體比def簡單很多
定義在函數內部的為局部變數,僅能在函數內部使用
定義在函數外部的為全局變數,可在全局使用
模塊是將包含所有定義的函數和變數的文件,一般將同類功能的函數組和在一起稱為模塊。
模塊需要導入後,在調用相應函數進行使用
模塊導入的方法:
從模塊中導入一個指定的部分
把一個模塊的所有內容全都導入
H. python 變數的命名
createPlot.ax1 是表示: ax1 是函數 createPlot 的一個屬性,這個可以在函數裡面定義也可以在函數定義後加入也可以
example:
def fun():
fun.x =1
當你在python的命令窗口下,運行一次fun()後,x 就是 fun()的一個屬性,你在命令窗口下輸入
fun.x 後面會顯示 1
也可以 在 函數定義完後加入 屬性 如 fun.y = 2,在使用 dir(fun),你就會發現fun有 x,y 這兩個屬性
I. python 定義變化的變數名稱
利用命名空間動態賦值。在 Python 的命名空間中,將變數名與值存儲在字典中,可以通過 locals(),globals() 函數分別獲取局部命名空間和全局命名空間。
實例:
names = locals()
for i in range(5):
names['n' + str(i) ] = i
print(n0, n1, n2, n3, n4)
輸出結果:
0 1 2 3 4
J. python中如何通過變數獲取變數的名字字元串
1. 使用連接符: +
world = "World"print "Hello " + world + " ! "
2. 使用佔位符來內插
world = "World"print "Hello %s !" % world
3. 使用函數
li = ['my','name','is','bob']mystr = ' '.join(li)print mystr
上面的語句中字元串是作為參數傳入的,可以直接用變數替換:
begin_date = '2012-04-06 00:00:00'end_date = '2012-04-06 23:59:59'select * from usb where time between to_date(begin_date,'YYYY-MM-DD HH24:MI:SS') and to_date(end_date,'YYYY-MM-DD HH24:MI:SS')