##Python##
##Functions##
##2018/4/4#
##e.g.1
##function defenition
def say_hello():
#缩进是必要的
print('hello world.')
print('hello python.')
##calling function
say_hello()
##函数参数
#e..g2
def print_max(a,b):
if a > b:
print(a)
else:
print(b)
print_max(233,10086)
##局部变量
#当你在一个函数的定义中声明变量时,它们不会以任何方式与身处函数之外但具有相同名称
#的变量产生关系,也就是说,这些变量名只存在于函数这一局部(Local)。这被称为变量的
#作用域(Scope)。所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始。
#e.g.3
x = 10086
def fun(x):
print('x is',x)
x = 2
print('local x is',x)
fun(x)
print('x is still',x)
##global
##如果你想给一个作用域外的变量赋值,必须使用global语句
#e.g.4
v = 10086
def fun():#参数列表中必须不包含你想用global生命的变量
global v
print('v is',v)
v = 2
print('local v is',v)
fun()
print('v is still?',v)
##默认参数
#对于一些函数来说,你可能为希望使一些参数可选并使用默认的值,以避免用户不想为他们
#提供值的情况。默认参数值可以有效帮助解决这一情况。你可以通过在函数定义时附加一个
#赋值运算符( = )来为参数指定默认参数值。
#要注意到,默认参数值应该是常数。更确切地说,默认参数值应该是不可变的。
#e.g.5
def say_message(message,times = 1):
print(str(message) * times)
say_message('I love China!\n')
#只有那些位于参数列表末尾的参数才能被赋予默认参数值,意即在函数的参数列表中拥
#有默认参数值的参数不能位于没有默认参数值的参数之前。
##关键字参数##important##
#如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过
#命名它们来给这些参数赋值——这就是关键字参数(Keyword Arguments)——我们使用命
#名(关键字)而非位置(一直以来我们所使用的方式)来指定函数中的参数。
#这样做有两大优点——其一,我们不再需要考虑参数的顺序,函数的使用将更加容易。其
#二,我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值。
#e.g.6
def print_info(name = 'None',addr = 'None',age = 0,others = 'None'):
print('My name is {} and I am coming from {}.\nLet me think.I am {} years old now.'.format(name,addr,age))
print(others)
print_info(age=2233,name='bilibili',addr='www.bilibili.com',others='I love Python.emmm有什么奖励么...')
##return##
#return 语句用于从函数中返回,也就是中断函数。我们也可以选择在中断函数时从函数中返
#回一个值。
#e.g.7
def max(a,b):
if a > b:
return a
else:
return b
print(max(1,2))
##DocStrings##
#Python 有一个甚是优美的功能称作文档字符串(Documentation Strings),在称呼它时通常
#会使用另一个短一些的名字docstrings。DocStrings 是一款你应当使用的重要工具,它能够帮
#助你更好地记录程序并让其更加易于理解。令人惊叹的是,当程序实际运行时,我们甚至可
#以通过一个函数来获取文档!
#e.g.8
print(help.__doc__)
#e.g.9
def display():
'''#This function just do nothing
It is designed for shouwing this funtion'''
return
print(display.__doc__)
#函数的第一行逻辑行中的字符串是该函数的 文档字符串(DocString)。
#该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。
#第二行为空行,后跟的第三行开始是任何详细的解释说明。在此强烈建议你在你所有重要功
#能的所有文档字符串中都遵循这一约定。