您的位置:首页 > 编程语言 > Python开发

Python小白的进阶之路---Day4

2019-03-04 22:27 134 查看

Python小白的进阶之路---Day4

  • 4.函数返回值

  • 参考链接:
    https://study.163.com/course/introduction.htm?courseId=378003#/courseDetail?tab=1
    https://blog.csdn.net/wwy0324/article/details/81116062
    https://blog.csdn.net/liang19890820/article/details/68488392
    https://blog.csdn.net/weixin_41131904/article/details/87438558
    https://www.geek-share.com/detail/2729166191.html
    https://blog.csdn.net/hanbo6/article/details/80356767
    https://blog.csdn.net/dgqJs/article/details/86582598

    1.函数关键字

      关键字是预先保留的标识符,每个关键字都有特殊的含义。它是python内置的,具有特殊意义的标识符;与函数不同,关键字后面不需要使用括号。编程语言众多,但每种语言都有相应的关键字,Python 也不例外,它自带了一个

    keyword
    模块,用于检测关键字。
      要获取关键字列表,可以使用内置函数 help():

    >>> help('keywords')
    
    Here is a list of the Python keywords.  Enter any keyword to get more help.
    
    False               def                 if                  raise
    None                del                 import              return
    True                elif                in                  try
    and                 else                is                  while
    as                  except              lambda              with
    assert              finally             nonlocal            yield
    break               for                 not
    class               from                or
    continue            global              pass

      也可以使用 keyword 模块:

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

    2.函数的定义

      函数:把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
    函数的使用包含两个步骤 :

    1. 定义函数–封装独立的功能
    2. 调用函数–享受封装的成果

      简单来讲,一个程序可以按照不同的功能实现,分割成许许多多的代码块,每一个代码块就可以分装成一个函数。在Python中创建一个函数用

    def
    关键字,格式为:
    def 函数名():
    ,注意函数名后一定加上()。

    >>> def Myfirstfunction():
    print('Enjoy创建的第一个函数')
    print('加油呀')
    >>> Myfirstfunction()
    Enjoy创建的第一个函数
    加油呀

    3.函数参数与作用域

    3.1函数的参数

    (1) 形式参数和实际参数
      从函数调用的角度来看,分为形参和实参。形式参数指的是函数创建和定义过程中小括号里的参数,而实际参数指的是函数再被调用的过程中传递进来的参数。

    >>> def firstfunction(name):
    print(name)
    
    >>> firstfunction('神奇的Python')
    神奇的Python
    >>>

    如上所示,“name”就是形式参数;“神奇的Python”就是实际参数。

    (2) 关键字参数和默认参数
      在调用函数的时候,程序员有时会因为搞乱了参数的顺序使程序混乱,因此有了关键字参数:

    >>> def something(name,words):
    print(name+'-'+words)
    
    >>> something('江南','是JJ演唱的')
    江南-是JJ演唱的
    >>> something('是JJ演唱的','江南')
    是JJ演唱的-江南
    >>> something(words='是JJ演唱的',name='江南')
    江南-是JJ演唱的

      默认参数是在定义的时候赋予了默认值的参数,使用默认参数,就可以不带参数去调用函数:

    >>> def some(name='江南',words='是JJ演唱的'):
    print(name+'---'+words)
    
    >>> some()
    江南---是JJ演唱的
    >>> some('不能说的秘密','周杰伦')
    不能说的秘密---周杰伦

      关键字参数和默认参数的区别是:关键字参数是在函数调用的时候,通过参数名指定要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数调用出错;而默认参数是在参数定义过程中,为形式参数赋值,在函数调用的时候,不传递实际参数,则默认使用形式参数的初始值代替。
    (3)收集参数
      当参数个数不确定时,在表示收集参数的参数前面加上*来表示收集参数。

    >>> def number(*params):
    print('有%d个参数'%len(params))
    print('第二个参数是:',params[3])
    
    >>> number(1,2,2.3,2.34,'happy')
    有5个参数
    第二个参数是: 2.34

    3.2函数的作用域

      变量的作用域也就是平常所说的变量可见性。一般的编程语言都有局部变量(Local Variable)和全局变量(Global Variable)之分。在python中,共有四种函数作用域,分别为函数内部(local)、函数内部与函数内嵌函数之间(enclosing)、全局(globle)和Python内置作用域(built in)。函数被调用时,解释器会先后在以上四种作用域寻找变量。即(L>>E>>G>>B)

    (1)局部变量&全局变量
      在函数里边定义的参数以及变量,都称为局部变量,函数中定义的变量的作用域就是整个函数,从定义开始到函数结束。事实上,Python在运行函数的时候,利用栈(Stack)进行存储,当执行完该函数后,函数中所有数据会被自动删除。所以在函数外边是无法访问到函数内部的局部变量的。如果全局变量和局部变量同名,局部变量作用域内使用的是局部变量。

    >>> a=1
    >>> def myfunction():
    a=5
    print(a)
    
    >>> a
    1
    >>> myfunction()
    5

    从程序看来,有一个变量a,我们将它传入myfunction()函数中将a修改为2并输出;结果应该是2才对,但是正确的结果却是1。这是因为,a = 1中a为全局变量,而myfunction()中的a只是局部变量,我们通过修改局部变量是影响不到全局变量的,也就是说我们不能通过函数内的操作去影响全局变量。
      与局部变量相对的是全局变量,全局变量拥有更大的作用域,从定义开始到整个文件结束都可以使用。全局变量在整个代码段中都是可以访问到的,但是不要试图在函数内部去修改全局变量的值,因为那样Python会自动在函数内部新建一个名字一样的局部代替变量。

    (2)global关键字
      在编程过程中,在完全了解在函数中修改全局变量可能会导致各种问题,你仍然认为有必要去修改这个全局变量,那么不妨可以使用

    global()
    关键字来到达目的。它的作用就是定义全局变量。如:若想修改上面程序的全局变量,则我们可以这样进行修改:

    >>> a=1
    >>> def name():
    global a
    a=20
    print(a)
    
    >>> name()
    20
    >>> a
    20

    (3)内嵌函数
      Python函数的定义是可以嵌套的,也就是允许在函数内部创建另一个函数,这种函数叫做内嵌函数或内部函数。

    >>> def func():
    print('一二三四五')
    def funb():
    print('12345')
    funb()
    
    >>> func()
    一二三四五
    12345

    内嵌函数的作用域都在外部函数之内,需要注意的是,除了func()可以调用funb()这个内嵌函数外,没有任何可以对funb()进行调用。否则会报错。

    >>> funb()
    Traceback (most recent call last):
    File "<pyshell#14>", line 1, in <module>
    funb()
    NameError: name 'funb' is not defined

    4.函数返回值

      在很多编程语言中,函数和过程其实是分开的。一般认为函数是有返回值的,而过程是简单特殊并且没有返回值的。Python严格来说只有函数,没有过程!

    >>> def hello():
    print(1)
    
    >>> print(hello())
    1
    None

    调用print(hello())之后打印了两行文字,第一行是hello()函数执行的。第二行呢?当不写返回语句的时候,默认Python函数是return None的。
      有些时候,需要函数为我们返回一些数据来报告执行的结果。所以,我们的函数需要返回值,非常简单,只需要在函数中使用关键字

    return
    ,后面跟着的就是指定要返回的值。如果对上述程序稍加改动:

    >>> def hello():
    print(1)
    return(2)
    
    >>> print(hello())
    1
    2

      另外,Python还可以用列表打包多种类型的值一次性返回,也可以直接用元组的形式返回多个值:

    >>> def test(num1,num2):
    return num1+num2
    
    >>> test(2,3)
    5
    >>> def test():
    return[1,3,'JJ',5.21]
    
    >>> test()
    [1, 3, 'JJ', 5.21]
    >>>
    >>> def test():
    return(1,3,'JJ',5.21)
    
    >>> test()
    (1, 3, 'JJ', 5.21)
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: