本文目錄一覽:
- 1、python 為什麼裝入庫後調用時仍然顯示沒有這個庫
- 2、在調用一些Python里的函數的時候 為什麼有些函數需要實例化有些不需要?
- 3、為什麼Python調用方法,有的前面加類名,有的不加?
- 4、Python 使用類直接調用方法的時候 要忽略第一個參數嗎?
- 5、shell腳本里怎樣在調用python時傳參數
- 6、java調用python時傳遞的參數問題?
python 為什麼裝入庫後調用時仍然顯示沒有這個庫
檢查是否裝入pip list
用pip install –upgrade 包名 進行更新
確定安裝到了正確的Python版本上
找到python的路徑後找到自己安裝的庫位置,複製路徑,在你的程序前寫入import sys sys.path.append(路徑)
我的路徑是C:\Program Files\Python310\Lib\site-packages
在調用一些Python里的函數的時候 為什麼有些函數需要實例化有些不需要?
如果一個方法是靜態方法或類方法,那麼,可以直接調用。
如果一個方法不是靜態的,那麼,它會需要self來訪問實例中的某些屬性,那麼就只能在實例上調用。
你給出的代碼中,tensor_trans = transforms.ToTensor()這一句,實際上只是簡化引用,並沒有實例化transforms。
作為示例:
class MyUtil(object):
….@staticmethod
….def fn1():
……..return ‘a’
….def fn2(self):
……..return ‘b’
對方法fn1,我們可以直接調用:
x = MyUtil.fn1()
但對於fn2,則只能實例化後調用:
util=MyUtil()
x = util.fn2()
當然,對於fn1,也可以在實例上調用:
util=MyUtil()
x = util.fn1()
為什麼Python調用方法,有的前面加類名,有的不加?
答: Python使用面向對象的方法進行編程時,確實有兩種調用方法。第一,當被調用的方法是靜態方法,那麼這個時候無須實例化對象,直接按照類名.函數名格式即可,如math.sin(),在該函數的底層實現當中,使用了@staticmethod聲明靜態方法,我的理解是這樣的,當某個方法經常被使用時,把它聲明成靜態方法會方便一些;第二,當被調用方法是非靜態方法時,則必須先實例化一個對象,再進行方法調用。希望能夠幫助到你。
例子
Python 使用類直接調用方法的時候 要忽略第一個參數嗎?
一般情況下,第一個參數是self,調用時不需要傳遞。
使用裝飾器@staticmethod修飾的方法,第一個參數不是self,因此調用時不能忽略第一個參數:
class MyTool(object):
def max_list_1(self, nums):
”’這個方法有兩個參數,但調用時不需要傳第一個參數”’
i_max = None
for i in range(len(nums)):
if i_max is None:
i_max = i
elif len(nums[i_max]) len(nums[i]):
i_max = i
return i_max
@staticmethod
def max_list_2(nums):
”’這個方法只有一個參數”’
i_max = None
for i in range(len(nums)):
if i_max is None:
i_max = i
elif len(nums[i_max]) len(nums[i]):
i_max = i
return i_max
data = [[1,2,3,4,5],
[‘a’,’b’,’c’,’d’,’e’,’r’,’t’],
[9999],]
tool= MyTool()
print(tool.max_list_1(data))
print(tool.max_list_2(data))
shell腳本里怎樣在調用python時傳參數
Python 可以利用 sys.argv 拿到命令列上的 arguments:
$ python test.py 1 2 3
test.py:
import sys
print(sys.argv)
結果:
[‘test.py’, ‘1’, ‘2’, ‘3’]
所以你在 build_using_xctool.sh 中可以這樣調度 python:
python /Users/gyd/Desktop/auto_send_email.py subject msg toaddrs fromaddr smtpaddr password
然後在 auto_send_email.py 中:
import sys # 自己 import sys…if __name__ == ‘__main__’:
sendmail(*sys.argv[1:])
java調用python時傳遞的參數問題?
需要用到需要用到jython.jar
java example:
public static void main(String[] args) {
//定義參數
String[] args2 = {“arg1″,”arg2”};
//設置參數
PythonInterpreter.initialize(null, null, args2);
PythonInterpreter interpreter = new PythonInterpreter();
//執行
interpreter.execfile(“E:\\jython.py”);
System.out.println(“———-run over!———-“);
}
python的程序:
#!/bin/env python
import time
import sys
argCount = len(sys.argv)
print(‘before sleep’)
time.sleep(5);
print(‘after sleep’)
for str in sys.argv:
print(str)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/292978.html