zoukankan      html  css  js  c++  java
  • Python的逻辑结构和函数

    1.Python中的逻辑结构

      ①顺序执行

      ②选择执行:   

    if...elif...else...           

    没有switch..case..

      ③循环执行:   

    for...in...    

    while...      

    没有do..while...

     

     注意: if/for/while后面不使用{ }, 而用 : 代替;  下面一句必须有缩进(可以是TAB或若干空格);  再下面一句如果也是执行主体必须有同样的缩进!

     循环语句中,可以使用关键字:break(打断循环) 和 continue(继续下一次循环)

    if( ):

      pass

    if( ):

      pass

    else:

      pass

    if( ):

      pass

    elif( ):

      pass

    else:

      pass

    while(  ):

       pass

    for  临时变量   in   list/tuple/range/set/dict :

       pass

    2.Python中使用函数

     定义:函数用于封装一批需要反复执行的代码

     创建函数:

    def  函数名( 形参列表 ) :

    函数主体

    return 返回值

     调用函数:

    变量 = 函数名( 实参列表 )

    注意:Python中实参的个数必须与形参个数完全一样!!!

     默认值参数:

    def  add(n1, n2=200):

    pass

    调用可以有两种形式:

    add(10)     #n1=10; n2=200

    add(10, 20) #n1=10; n2=20

    注意:有默认值的形参必须声明在所有无默认值的形参之后!

     可变数量的参数:

    def  add( *nums ):

    pass #此处的nums是一个tuple

    add(10, 30, 50)

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

    def  add( **money ):

    pass #此处的money是一个dict

    add(jan=1000, feb=3000, may=5000)

     关键字参数

    如果函数的形参过多,因为顺序很重要,不方便记忆,实参列表中可以使用关键字参数:每个实参都有一个名字——该实参对应的形参名

    def  connect(host, user, pwd, port, dbname):

    pass

    connect(user='root', pwd='123456', port=3306, dbname='xz', host='127.0.0.1')

     

     

    3.变量的作用域问题 —— 难点

      Python中,变量的作用域分为四类:简称LEGB

      ①Local:本地作用域,指定义在函数内的变量,只能在当前函数内使用

      ②Embeded:嵌入作用域,或称为闭包作用域,指定义在外部函数,但要供内部函数在外部使用的变量

      ③Global:全局作用域,指定义在任意函数外面,可供当前脚本中的任意函数使用

      ④Built-In:内置作用域,指Python解释器提供的变量和函数,可以在任意脚本中使用

      总结:四种作用域下若都有某个变量,其优先级为:Local > Embeded > Global > Built-In

     


      class:类,是一组事物共性的抽象——类是抽象的,没有具体值的

      class = attributes + methods

      object:对象,是从属于某个类的一个具体实例——对象是具体的

      面向对象的三个基本特征:

      ①封装:把原本离散的数据和操作包装为一个整体——定义class

    class Emp :

    def  __init__(self, age, ename) : #构造方法

    self.age = age #封装属性

    self.ename = ename #封装属性

    def  printInfo(self): #封装方法

    print(self.ename, self.age)

    e2 = Emp(20, 'Tom') #构建实例不要使用new关键字

      ②继承:让一个类自动获取另一个类中全部的成员,从而提高代码可维护性

    class  Emp:

    pass

    class  Coder( Emp ): #Python支持多继承

    def __init__(self)

    super().__init__() #在子类构造方法内调用父类构造方法

    c3 = Coder( ) #创建子类对象,其体内有一个父类的对象

      ③多态:一个方法,根据对象的不同(父或子),可能运行出多种结果

    class  Emp:

    def printInfo():

    pass

    class  Coder(Emp):

    def printInfo():      #子类重写/覆盖了父类的同名方法

    pass

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

    e = Emp()

    e.printInfo() #第一次调用

    e = Coder()

    e.printInfo() #第二次调用,与第一次调用结果不同

     

     说明:

    ①Python中没有private/protected/public访问修饰符,如果想让一个属性只能在本类内部使用不能在类外使用:只需要在属性名前添加两个下划线即可;例如: self.__age = 30

    ②Python中没有static关键字,想实现类似的效果,可使用“类属性”——直接声明在类内(不是方法内),且不用self.来访问:

    class  Emp:

    location  = '中国'    #类属性,访问方法:Emp.location

    def __init__(self):

    self.age = 30    #实例属性

     

     

    5.Python中的异常处理

      Exception:异常,可能发生也可能不发生错误!如果没发生程序可以正常执行下去;反之若发生了就可能导致程序终止执行。

      示例:请用户从键盘输入两个数字,程序计算出数字的商,输出在屏幕上

      try:

    #可能发生异常的语句

    #...

      except  XxError as e:

    print(e)

      except  YyError as e:

    print(e)

      except  Exception as e:

    print(e)

      finally:

    #无法异常发生与否都要执行的收尾处理

    如果需要根据业务逻辑,可以手工抛出错误:  raise  Exception('错误消息')

    注意:手工抛出的错误也必须被try..except...

  • 相关阅读:
    Java字符串跟ASCII码互转
    java 一款可以与ssm框架完美整合的web报表控件
    使用<c:set>标签配置项目路径
    Linux下部署tomcat及tomcat war包应用程序
    支付宝app支付服务端流程
    文本数据增量导入到mysql
    java 读取mysql中数据 并取出
    实现读取文本数据,在将数据导入mysql
    给一个整形数组,给出一个值,当这个值是数组某些数字的和,求出数组下标的值
    文本数据和mysql 里面的数据比较
  • 原文地址:https://www.cnblogs.com/sna-ling/p/12782580.html
Copyright © 2011-2022 走看看