【python】python函数

1、之前使用过的内建函数:

len(字符串变量)

range(a,b,c)

int(可转化成整数的字符串)

2、def

函数用关键字def定义,之后跟函数的名称,再跟圆括号,括号内可以有参数列表,再跟冒号结束。另起一行是函数体。

------------

#C:/Python33/HwhCode
#Filename: controlStream.py
def sayHello():
    print('Hello World!')

sayHello()
sayHello()

---------------

输出:


-------------

####printMax#######
def printMax(a,b):
    if a>b:
        print(a,'is maximum.')
    elif a == b:
        print(a,'is equal to',b)
    else:
        print(b,'is maximum.')

printMax(3,4)
x=5
y=5
printMax(x,y)

--------------

输出:


3、局部变量:(非常不同)

作用于仅在函数内部,与函数外部具有相同名称的变量没有任何关系。

变量的作用于是它定义的块,从它定义那一点开始生效。

----------

#####func_local######
xx = 50
def func_local(xx):
    print('xx is',xx)
    xx = 2
    print('Changed local xx to',xx)
func_local(xx)
print('xx is still',xx)

----------


这里要注意的是,python在函数块中对一个变量重新赋值似得使用,是在定义一个新的局部变量。

4、全局语句

如果想要对一个函数外的变量赋值,需要告诉python这个变量时全局的。(但这个并不提倡使用。因为只知道是外面的,但不知在哪里定义的。)

--------

#####func_global#####
z = 50
def func_global():
    global z
    print('z is',z)
    z = 2
    print('Changed global z to',z)
func_global()
print('Value of z is',z)

---------


可以使用global同时指定多个全局变量。如global x,y,z

5、非局部语句(44页)

非局部作用域介于局部作用域和全局作用域之间。非局部作用域在所定义的函数内定义函数时会看到。

在python中,任何代码都是可执行的,所以,在函数内可以定义函数。

------------

######func_nonlocal######
def func_outer():
    x = 2
    print('x is',x)
    def func_inner():
        nonlocal x
        x =5
    func_inner()
    print('Changed local x to',x)
func_outer()

----------


比较:

在函数外部声明的变量,是局部变量。如果要在函数内部使用这个局部变量,需要用global关键字声明为全局变量。

在函数内部声明的变量,是局部变量。如果要在函数内部嵌套定义的函数里使用,需要用nonlocal关键字声明为非局部变量。

6、默认参数值

对于一些函数,可能会希望它的一些参数可是选的,如果不想为这些参数提供值得话,可以使用默认参数值。

只需要在函数定义的时候,参数列表中赋上默认值就可以了。

-------------

#######func_default_value##########
def say(message,times =1):
    print(message*times)
say('Hello')
say('World',5)

-------------


知识点:

(1)只有在参数列表最后面的那些参数可以有默认参数值。

(2)print()语句,print(字符串*次数)

7、关键参数:

如果,某个函数有很多参数。而使用时只想指定其中的一部分,可以通过命名来为这些参数赋值-----称之为关键参数,我们使用参数名字作为关键字来给参数赋值,而不是使用位置。

优势:(1)我们不必担心参数的位置,更加方便了。(2)如果某些参数有了默认参数值,我们可以指定需要赋值的参数。

------------

#####func_key#######
def func_key(a,b=5,c=10):
    print('a is',a,'and b is',b,'and c is',c)
func_key(3,7)
func_key(25,c=24)
func_key(c=50,a=100)

----------


8、VarArgs参数(全新的)

有时候,你可能想要定义一个可以获取任意个参数的函数,可以使用*来实现。

------------

######func_total#######
def func_total(initial = 5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
print(func_total(10,1,2,3,vegetables=50,fruits=100))

------------


知识点:

(1)带*的参数,*param,从这一点开始所有的参数都被收集到一个叫做param的列表里边。numbers=(1,2,3)

(2)带**的参数,**param,从这一点开始,所有的关键字参数都被收集到一个叫做param的字典里。keywords='vegetables':50,'fruits':100

9、Keyword-only参数(全新的)

如果想指定特定的关键参数是keyword-only参数,而不是位置参数,可以在带*的参数后申明。

注意,keyword-only参数使用时,如果没有默认值,则一定要在调用的时候赋给默认值。否则会出错。

-----------

def total(initial=5,*numbers,vegetables):
    count = initial
    for number in numbers:
        count += number
    count += vegetables
    return count
print(total(10,1,2,3,vegetables=50))
print(total(10,1,2,3,))

-----------


出错。因为vegetables没有默认值。如果赋上默认值,就不会出错了。

总结:

(1)在带*的参数后声明参数,会导致keyword-only参数。

(2)如果想要使用keyword-only参数,同时又不想使用带*的参数,可以用一个空*代替。如:def total(initial=5,*,vegetables):

10、return语句

return语句,用来从一个函数返回,即跳出函数。我们可以选择,是否从函数返回一个值。

----------------

######func_return######
def maximum(x,y):
    if x>y:
        return x
    else:
        return y
print(maximum(2,3))

-----------


注意:

(1)没有返回值的return 语句,等价于return None

(2)None是python中没有任何东西的特殊类型。如果一个变量值为None,就是它没有值。

(3)每个函数末尾,自动默认有一个return None语句,除非你自己提供一个return语句。

------------

###someFunction####
def someFunction():
    pass
print(someFunction())
def someFunction1():
    x=1
print(someFunction1())

-------------

每个函数末尾,自动默认有一个return None语句。pass语句表示一个空的语句块。

注意,python有内置的max函数,最好使用内置函数,而不是自己定义。

11、DocStrings文档字符串(应当经常使用)

--------

####func_doc######
def printMax(x,y):
    '''Prints the maximum of two numbers.

    The two values must be integers.'''
    x = int(x)#convert to integers, if possible
    y = int(y)
    if x>y:
        print(x,'is maximum')
    else:
        print(y,'is maximum')
printMax(3,5)
print(printMax.__doc__)
help(printMax)

---------


知识点解析:

(1)函数第一个逻辑行的字符串是这个函数的文档字符串。DocStrings也适用于文档和类。

(2)文档字符串的惯例是:首行以大写字母开始,句号结尾。第二行是空行。第三行开始是详细的描述。

(3)使用__doc__(双下划线)调用文档字符串。

(4)help()函数,由此可见help函数仅仅是抓取函数的docStrings进行输出。

12、注解

注解是一个高级特性,获取每个参数和返回值附加信息的漂亮的方式。

python语言本身不以任何方式解释这些注解。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值