包含调用python的时候的词条

发布时间:2022-11-18

本文目录一览:

  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 来访问实例中的某些属性,只能在实例上调用。

示例:

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 使用面向对象的方法进行编程时,确实有两种调用方法。

  1. 当被调用的方法是静态方法,那么这个时候无须实例化对象,直接按照 类名.函数名 格式即可,如 math.sin(),在该函数的底层实现当中,使用了 @staticmethod 声明静态方法。当某个方法经常被使用时,把它声明成静态方法会方便一些;
  2. 当被调用方法是非静态方法时,则必须先实例化一个对象,再进行方法调用。

例子


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 拿到命令行上的参数:

$ 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
if __name__ == '__main__':
    sendmail(*sys.argv[1:])

java调用python时传递的参数问题?

需要用到 jython.jar

Java 示例:

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)