zoukankan      html  css  js  c++  java
  • 《Python编程快速上手——让繁琐的工作自动化》读书笔记 第三章 函数

    下面我们看下 Python 里的函数

    一、函数入门

    先举个栗子尝尝鲜

    def hello():
          print('Howdy!')
          print('How are you!')
          print('Hi hi Hi ')
    
    hello()
    hello()
    hello()
    #输出结果
    Howdy!
    How are you!
    Hi hi Hi 
    Howdy!
    How are you!
    Hi hi Hi 
    Howdy!
    How are you!
    Hi hi Hi 

    定义函数 使用 def 关键字,函数名跟在后面,()函数可以无参亦可有参根据实际情况而定,:后自动退格书写函数体

    带参函数:

    def hello(name):
          print('Hello ' + name)
          print('How are you ' + name)
          print('Hi hi Hi ' + name)
    
    hello('令狐冲')
    hello('风清扬')
    hello('依林')
    #输出结果
    Hello 令狐冲
    How are you 令狐冲
    Hi hi Hi 令狐冲
    Hello 风清扬
    How are you 风清扬
    Hi hi Hi 风清扬
    Hello 依林
    How are you 依林
    Hi hi Hi 依林

    我们在看一个函数内嵌套分支流程的栗子

    import random
    def getAnswer(an):
          if an == 1:
                return 'It is certain'
          elif an == 2:
                return 'It is decidedly so'
          elif an == 3:
                return 'Yes'
          elif an ==4:
                return 'Reply hazy try again'
          elif an == 5:
                return 'Ask again later'
          elif an==6:
                return 'Concenttrate and ask again'
          elif an == 7:
                return 'My reply is no'
          elif an ==8:
                return 'Outlook not so good'
          elif an == 9:
                return 'Very doubtful'
    
    r = random.randint(1,9)
    fortune = getAnswer(r)
    print(fortune)

    二、下面我们看下函数中的变量的作用域问题

    1、局部变量不能在全局进行使用

    def spam():
          aggs = 2121 # 函数内部定义的变量
    spam()
    print('我要调用 spam() 内部的变量了,也不知 ok 不?')
    print(aggs) # 函数内部定义的变量,不能在函数外进行调用
    
    #运行程序报错如下
    我要调用 spam() 内部的变量了,也不知 ok 不?
    Traceback (most recent call last):
      File "E:worksp_pydemo115funtest03.py", line 5, in <module>
        print(aggs) # 函数内部定义的变量,不能在函数外进行调用
    NameError: name 'aggs' is not defined

    2、局部变量,不能使用其它作用域的局部变量:若声明两个不同作用据的相同名称的局部变量,那么是两个不同的变量

    def spam():
          aggs = 2121
          bacon()
          print(aggs)
    def bacon():
          ham = 101
          aggs = 33
    
    spam()
    print('---------------------------')
    bacon()

    3、全局变量可以在局部作用域下使用

    def spam():
          print(aggs)
    aggs = 33 
    spam() # 结果 33
    print(aggs)# 结果 33
    33
    33

    说明:因为函数内未定义 aggs 变量,也未赋值,当函数 打印 aggs 变量时,Pyhon 会从全局变量里进行搜索;

    4、名称相同的全局变量和局部变量

    def spam():
          eggs = 'spam local'
          print(eggs) # spam 方法内局部变量
    def bacon():
          eggs = 'bocon local'
          print(eggs)# bacon 方法内局部变量
          spam() #调用 spam() 方法
          print(eggs) # bacon 方法内局部变量
    
    eggs='global'
    bacon()
    print(eggs) # 全局变量
    
    bocon local
    spam local
    bocon local
    global

    python 中:局部变量和全局变量重名合法

    5、global  局部变量修改全局变量

    def spam():
          global eggs # 全局变量
          eggs = 'spam'
    def bacon():
          eggs = 'bacon' # 局部变量
    def ham():
          print(eggs) # 打印全局变量
    
    eggs = 42 # 全局变量
    spam() #全局变量
    print(eggs)#全局变量
    spam

    说明:当使用 global  修饰变量时,变量是作用在全局作用域上,并未创建局部变量 eggs,即: global eggs 表明 eggs 是 全局变量

    三、异常处理

    def spam(n):
          return 6/n
    try:
           print(spam(2))
           print(spam(4))
           print(spam(0))
    except ZeroDivisionError:
          print('Error : Invalid argument,')

    3.0
    1.5
    Error : Invalid argument,

  • 相关阅读:
    第一次个人编程作业
    软件工程博客作业1
    第一周作业
    预备作业
    没有权限访问路径
    Linux命令:pwd
    Linux命令:readonly
    Linux命令:read
    Bash:精华
    Linux命令:history
  • 原文地址:https://www.cnblogs.com/wdh01/p/13735723.html
Copyright © 2011-2022 走看看