pythonimport變數
⑴ python import 後 變數怎麼獲取
因為site_url屬於item.py的內部變數,應該 dir(item) 才能夠看到site_url
⑵ python import失敗怎麼辦
重新安裝要import的包(路徑要對)
可以直接放進site-package文件夾(如:D:Python34/Lib/site-package)
把包直接放進去
如果要import的不是包是.py文件
那就需要讓你要import的文件和運行import的代碼在同一路徑
⑶ python 引用的模塊名稱是變數的時候怎麼寫呢
dy_mole_name="sys"
a=__import__(dy_mole_name)
fromaimportXXX
⑷ python如何通過變數import其他文件夾的py文件
在被import py文件的文件夾中建立一個空的__init__.py文件
⑸ python import 和 from import 到底什麼區別
from molename import functionname
如上,molename即模塊名,functionname即函數/變數名。
使用from import後該模塊被導入的函數/變數都不需要加上前綴(如:mole.func()),可以直接寫func()。而使用import時,會導入該模塊所有內容,但是需要在函數/變數前加前綴。
⑹ Python變數
請復制如下代碼,試一下:
x=99
defselector():
import__main__
print__main__.x
x=88
printx
selector()
⑺ python from import 和 import 區別
python中有兩種導入模塊的方式,一種是import xxx,另一種是from xxx import yyy,兩者的區別在於,第一種僅僅導入一個模塊,並且將該模塊執行了一遍,if __main__ =="__main__"裡面的沒有執行。
同時,有在當前的命名空間中導入變數,需要通過xxx.yyy的方式使用導入模塊中的變數、函數、類等;
第二種則將模塊中的變數yyy導入了當前命名空間,因此使用時可以直接以yyy調用,使用這種導入方法時,需要注意當前的命名空間是否有重名的,from xxx import *這種方式盡量不要使用,因為這樣就破壞了對命名空間的管理。
ps:使用from xxx import *時是不能導入以單下劃線開頭的保護屬性和以雙下劃線開頭的私有屬性的
⑻ python如何引用其他模塊中類的方法中的變數
沒法實現。
原因:
你的tmp,只是class a中的一個函數fun內的臨時變數
所以無法直接被外部調用。
並且只有fun函數執行時才存在,函數結束時,就不存在了。
關於變數的作用范圍,你可以參考:
【整理】Python中變數的作用域(variable scope)
想要可以被調用,可以試試:
改為:
#A.py
Class a()
tmp='123'
def fun()
。。。。。。
然後再去:
import A
print A.tmp
注意:
此時,tmp就是class a中的全局變數了。
⑼ python import 路徑問題 新手
以下為純手打,下面給幾個demos:
說明:
moles所在的目錄在python里叫package, 下面是一個名為 IsDir的package(實際上就是一個目錄), package下面有4個moles(A, B, C, D)和一個__init__.py文件,目錄結構如下:
IsDir/
A.pyB.pyC.pyD.py__init__.py
大體來講,有兩種方法可以調用某目錄下(包括遞歸目錄)的moles.
一. __init__.py為空時
1.1以下為調用moleA的代碼:
#!/usr/bin/envpython
fromIsDirimportA
A.say()
輸出:
ThisismoleA!
1.2 如果想調用moleA,B,C,D呢?
方法1.
#!/usr/bin/envpython
fromIsDirimportA
fromIsDirimportB
fromIsDirimportC
fromIsDirimportD
A.say()
B.say()
C.say()
D.say()
方法2.
#!/usr/bin/envpython
importIsDir.A
importIsDir.B
importIsDir.C
importIsDir.D
fromIsDirimport*
A.say()
B.say()
C.say()
D.say()
錯誤示例1:
#!/usr/bin/envpython
importIsDir.A
A.say()
錯誤示例2:
#!/usr/bin/envpython
fromIsDirimport*
A.say()
錯誤的原因:
IsDir/目錄下__init__.py為空時,直接importIsDir.A或者fromIsDirimport*是無效的.
從官方文檔里可以看到,__init__.py 里沒有__all__=[mole1,mole2,...]時,
fromIsDirimport* 只能保證IsDir被imported, 所以此時IsDir里的moles是無法被imported,
此時只有如我上面所寫的代碼所示才能正確執行,否則是錯誤的。官方解釋為:importIsDir.A並無任何意義,只有接著執行fromIsDirimport*後,importIsDir.A語句里的moleA才會被定義,所以完整的調用因改為: 1. import IsDir.A 2. from IsDir import *。
二. __init__.py用all=[...]指定該package下可以被imported進去的mole
__init__.py里寫入如下內容:
%catIsDir/__init__.py
__all__=["A","B"]
然後使用之:
#!/usr/bin/envpython
fromIsDirimport*
A.say()
B.say()
結果:
%pythontest.py
ThisismoleA!
ThisismoleB!
錯誤實例:
#!/usr/bin/envpython
fromIsDirimport*
C.say()
以上示例之所以錯誤,是因為C並沒有在__all__=["A","B"]里制定,由此可見,packageIsDir下面的__init__.py里,__all__=[...]具有隔離moles的作用。
補充:
mole A, B, C,D里我分別只定義了一個method, 例如,以下為mole A的code:
%catIsDir/A.py
defsay():
print"ThisismoleA!"
後記:
謝謝這位同學,回答你的問題感覺很有收獲,順便又把python溫習了一遍。回頭把這些總結貼到我的blog上以上為手寫,望採納,共勉。
=============================================================
老子寫了這么多居然採用了另一個簡陋的答案,mlgb的,枉我熬夜給你答題。這種白痴樓主就不配在這里問問題。