python方法的参数个数问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python方法的参数个数问题相关的知识,希望对你有一定的参考价值。

请帮我看下,在java中调用的python代码
这个方法定义,在类CrawlerClient.java
public boolean checkElementExists(ElementLocator elementLocator)
return getElement(elementLocator)==null?false:true;

我在python中调用,加载了头
from com.ifeng.webCrawler.crawler import CrawlerClient,CrawlerProperties
然后BaseElementLocator是ElementLocator的子类
baseElementLocator=BaseElementLocator()
下面这句调用了那个方法
res=CrawlerClient.checkElementExists(baseElementLocator)
可是结果

ERROR crawler - execute python error
Traceback (most recent call last):
File "<iostream>", line 122, in <module>
File "<iostream>", line 26, in extract
TypeError: checkElementExists(): expected 2 args; got 1
意思是需要两个参数,我只给了一个?可是这个定义只有一个参数啊,这是怎么回事

  Python中函数的参数传递问题,函数参数的传递往往是一个难以理解的概念,一个经典的例子如下所示:
  int swap(int a,int b)
  
  int temp;
  temp = a;
  a = b;
  b = temp;

  return 0;
  

  int a = 10,b = 20;
  printf("Before Swap a = %d, b = %d\\n",a,b);
  swap(a,b);
  printf("After Swap a= %d,b = %d\\n",a,b);
  参数是采用值传递的形式,存在形参与实参的区别,也就是将实参的值复制给形参,在函数内部操作的都只是形参的内容,并不改变实参的值,所以变量在操作过后并没有发生改变。
  参数传递过程中存在两个规则:
  1、通过引用将参数复制到局部作用域的对象中,意味着被用来访问函数参数的变量于提高给函数的对象无关,因为存在一个复制问题,这和C语言是相同的。而且修改局部对象不会改变原始数据。
  2、可以在适当位置修改可变对象。可变对象主要就是列表和字典,这个适当位置实质上就是前面分析的局部子对象的修改不会改变字典对象或者列表对象的ID位置。
参考技术A 你好,你的这个函数确实是有一个参数的,
那么请你看下错误提示:
他说的是不是这个文件里面的这个参数;
因为python出错提示是按照出错出现的顺序,打印的;本回答被提问者采纳
参考技术B 应该是有个隐藏的this参数

以上是关于python方法的参数个数问题的主要内容,如果未能解决你的问题,请参考以下文章

检查Python函数中传递的参数个数

如何找到Python函数的参数个数?

Python 获得命令行参数的方法

Python 字典 len()方法

Python 统计列表里面有多少个元素

python 如何向类方法传入参数