同一个类中一个函数里调用另一个函数的方法
创新互联-专业网站定制、快速模板网站建设、高性价比金口河网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式金口河网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖金口河地区。费用合理售后完善,十年实体公司更值得信赖。
class Solution:
def a(self):
self.b() # 注意这种写法:self.类名
def b(self):
print('在这里')
a = Solution()
a.a()
有什么办法省略掉那些被调用函数的参数?
也就是func2只想在调用是传入一个c。
那么func2在定义的时候必须喂饱func1,也就是func2在调用 func1时,当前作用域中要有a,b。
明显图中是没有做到的,没有实际ab
b可以试试在这个文件中直接定义 ab两个变量,那么在第三个文件中引入 func2,就可以直接传c给func2了,因为ab已经在上一步被配置好。
已有字符串形式的函数名称,那么如何调用这个函数呢?
通过调用内置函数locals()和globals()返回的字典对象,就可以可以获得名称与对象的映射关系。其中,locals()仅在全局范围内调用时可以获得函数对象。 我们来看以下的例子。
需要注意的是,使用上述方法通过字符串调用函数时,为了系统的安全,防止执行任意函数,需要对函数名做一些处理,也就是使用统一的前缀为这些函数命名。例如在上述例子中,使用前缀cmd_+函数名的形式定义函数(cmd_help,cmd_sum)。
在传入函数名字符串时,只传入函数名的后半部分(如"help","sum"),由程序添加前缀后组成完整的函数名,再调用该函数。
对于类的成员函数,则可以使用getattr()获得类成员函数。
上述代码通过字符串调用了类成员函数,与前一段代码执行的结果相同。
此外,还可以使用字典将字符串与函数对应起来调用,缺点就是每增加一个函数需要相应在字典对象中添加相应的键值,增加代码维护工作量。
以上代码在Python 3.6以上运行通过。
在if 里只需要yield "" + item_url.attrs['href']
然后Lsit(最好改可名,在python规范里,函数命名是全小写,而list又是保留字,比如改为display_hrefs)只需要循环输出getUrl的结果就好:
def getUrl(url: str):
....html = urlopen(url)
....for item_url in BeautifulSoup((html.read()).find ('div' , class_='AAA').findAll ("a"):
........if 'href' in item_url.attrs:
............yield "" + item_url.attrs['href']
def display_hrefs(url: str):
....for href in getUrl(url):
........print(href)
if __name__ == '__main__':
....display_hrefs("")
1、函数定义
①使用def关键字定义函数
②
def 函数名(参数1.参数2.参数3...):
"""文档字符串,docstring,用来说明函数的作用"""
#函数体
return 表达式
注释的作用:说明函数是做什么的,函数有什么功能。
③遇到冒号要缩进,冒号后面所有的缩进的代码块构成了函数体,描述了函数是做什么的,即函数的功能是什么。Python函数的本质与数学中的函数的本质是一致的。
2、函数调用
①函数必须先定义,才能调用,否则会报错。
②无参数时函数的调用:函数名(),有参数时函数的调用:函数名(参数1.参数2.……)
③不要在定义函数的时候在函数体里面调用本身,否则会出不来,陷入循环调用。
④函数需要调用函数体才会被执行,单纯的只是定义函数是不会被执行的。
⑤Debug工具中Step into进入到调用的函数里,Step Into My Code进入到调用的模块里函数。
import random
import string
def genList(n):
list1 = [random.randint(0,1000) for i in range(n)]
print list1
return list1
def calMean(list):
mean = sum(list)/len(list)
print mean
#test codes
list1 = genList(100)
calmean(list1)
帮你改了一下代码 , list是保留字,换成list1, 在genList里加了一个返回。