大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、函数定义
创新互联专注于曲水企业网站建设,成都响应式网站建设,商城网站定制开发。曲水网站建设公司,为曲水等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
①使用def关键字定义函数
②
def 函数名(参数1.参数2.参数3...):
"""文档字符串,docstring,用来说明函数的作用"""
#函数体
return 表达式
注释的作用:说明函数是做什么的,函数有什么功能。
③遇到冒号要缩进,冒号后面所有的缩进的代码块构成了函数体,描述了函数是做什么的,即函数的功能是什么。Python函数的本质与数学中的函数的本质是一致的。
2、函数调用
①函数必须先定义,才能调用,否则会报错。
②无参数时函数的调用:函数名(),有参数时函数的调用:函数名(参数1.参数2.……)
③不要在定义函数的时候在函数体里面调用本身,否则会出不来,陷入循环调用。
④函数需要调用函数体才会被执行,单纯的只是定义函数是不会被执行的。
⑤Debug工具中Step into进入到调用的函数里,Step Into My Code进入到调用的模块里函数。
inname = r"C:\Python27\esri.shp"
outname = "outname.cst"
# 在此处调用该函数。函数体定义必须放在调用以前。可以通过import
read_ESRT_……(file = inname, fileOut = outname)
# 这两个参数只是字符串而已,指明你的文件路径。注意在python中,若有 \ 号,则最好使用 \\ 双斜杠,或者如上例,加上前缀 r
__call__
在Python中,函数其实是一个对象:
f = abs
f.__name__
'abs'
f(-123)
由于 f 可以被调用,所以,f 被称为可调用对象。
所有的函数都是可调用对象。
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
我们把 Person 类变成一个可调用对象:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print 'My name is %s...' % self.name
print 'My friend is %s...' % friend
现在可以对 Person 实例直接调用:
p = Person('Bob', 'male')
p('Tim')
My name is Bob...
My friend is Tim...
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
任务
改进一下前面定义的斐波那契数列:
class Fib(object):
???
请加一个__call__方法,让调用更简单:
f = Fib()
print f(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
def a():
global q
q=1+2
return q
def b():
a()
c=2+q
print(c)
b()
5
q
3
函数中的变量在外面调用,需要申明为全局变量
注意代码格式
python以缩进为标准 而不是像Java 以分号分隔
函数调用需要 写在main函数内
仔细检查你的代码格式和语法
希望可以帮助你 请采纳 谢谢
已有字符串形式的函数名称,那么如何调用这个函数呢?
通过调用内置函数locals()和globals()返回的字典对象,就可以可以获得名称与对象的映射关系。其中,locals()仅在全局范围内调用时可以获得函数对象。 我们来看以下的例子。
需要注意的是,使用上述方法通过字符串调用函数时,为了系统的安全,防止执行任意函数,需要对函数名做一些处理,也就是使用统一的前缀为这些函数命名。例如在上述例子中,使用前缀cmd_+函数名的形式定义函数(cmd_help,cmd_sum)。
在传入函数名字符串时,只传入函数名的后半部分(如"help","sum"),由程序添加前缀后组成完整的函数名,再调用该函数。
对于类的成员函数,则可以使用getattr()获得类成员函数。
上述代码通过字符串调用了类成员函数,与前一段代码执行的结果相同。
此外,还可以使用字典将字符串与函数对应起来调用,缺点就是每增加一个函数需要相应在字典对象中添加相应的键值,增加代码维护工作量。
以上代码在Python 3.6以上运行通过。