三、PYTHON语法参考

  1. 条件判断

    • if语句
      • 单分支
        #!/usr/bin/python
        if expression and expression2:
            do something
        
      • if-else
        #!/usr/bin/python
        if expression:
            do something
        else:
            do other
        
      • if-elif-else
        if expression:
            do suite1
        elif expression2:
            do suite2
        else:
            do others
        
      • 三元条件表达式
        x if expression else y
  2. 循环

    • while语句
      while expression:
          do suite
      
    • for 循环
      for iter_var in iterable:
          do suite
      
    • break,continue , pass语义与c语言相同
    • 循环中的else
      while expression:
          do suite
      else:
          do suite2
      
      当循环结束时执行else语句,break语句也会跳过else语句,for循环同上
  3. 理解迭代器

  4. 理解列表解析
    [ item for item in iterable]

  5. 函数

    • prammar
      def fun(args):
          do suite
          return value
      
    • python中的函数可以像变量一样赋值


    • 参数类型
      • 位置参数


      • 默认参数


      • 关键字参数
        关键字参数必须出现在位置参数之后


      • 可变长度参数
        通过元组传递

        还可以使用字典传递关键字参数,注意函数调用,参数列表中的顺序fun(arg1,arg2,*argseq,**argdict)
    • 变量作用域和名称空间
      定义在全局的变量具有全局作用域,定义在局部比如函数或者代码块中的变量具有局部作用域,全局变量除非显式删除,会一直存活直到程序结束,而局部变量存放在该代码块的栈中,随函数生灭同步。当搜索一个标志符的时候,python先从局部作用域开始,如果局部作用域中没有找到,就在全局作用域中找,如果还未找到,就抛出异常。当我们在局部名称空间定义与全局名称空间一个相同名称的变量时,全局变量会被屏蔽,而使用局部名称空间的变量。使用globa在函数中声明某个变量为全局变量,在函数中对该变量的修改将是全局的,在函数中修改函数外变量的函数称为闭包
    • 生成器的概念
      挂起返回出中间值并多次继续执行的协同程序被成为生成器。协同程序是可以运行的独立函数调用,可以暂停或挂起,并且可以从函数中止的地方重新开始
  6. 异常处理
    异常处理是面向对象设计重要的一环,出现某些错误的时候,我们通过捕获异常来决定如何处理这些错误

    • 语法,一个try语句可以有多个except语句,可以使用raise显式抛出异常
      try:
          do suite
      except exception[,expression2]:
          ex suite
      finally:
          fin suite
      
    • 在一般的异常处理过程中,如果是文件类操作,可以使用with上下文管理器替代
  7. 模块的概念

    • 模块就是表面的意思,为了将复杂的功能区分开,将实现不同功能的代码段放在不同的文件中,叫做模块,将一个模块拿到当前文件中的过程成为导入。一个文件被看作是一个单独的模块,文件是在物理层上组织模块的方法
    • 路径搜索
      模块的导入需要通过一个成为路径搜索的过程,即在文件系统预定义区域搜索以该模块名称命名的py文件,默认搜索路径是在编译或安装的时候指定的,可以通过两种方式对其进行修改,一是通过修改shell中的PYTHONPATH环境变量,另一种是直接修改sys.path列表


    • 导入模块
      import module
      from module import fun
      from module import fun as fun2
      
    • 导入和加载
      在导入一个模块的时候,该模块顶层代码将被直接执行,包括函数定义,变量定义,所以将代码放入函数中是一个明智的决定,这是一次加载,如果一个模块被导入多次,那么它只会被加载一次。可以使用内建函数load显式加载某个模块。在python中有一个运行时变量name当该模块被当作主程序执行时,该变量的名字是main,当该模块作为模块被导入到其他模块中,该变量的名字是该模块的名称。所以经常在源文件中看到
      if __name__=='__main__':
          if suite
      
      包的概念我们类比java中包的定义来理解,将实现相同类别的模块通过包组织到一起,在物理上就是放到同一个文件夹中,访问包中某个模块时,通过package.module的方式。如果我们不希望模块中的某个属性被导入到其他模块,可以在该属性前加上单下划线_
      源文件编码
      #!/usr/bin/env python
      # -*- coding: UTF-8 -*-
      
  8. 面向对象程序设计

    • 一切皆对象
      使用面向对象程序设计,可以更真实的反映生活中需要解决的问题,将物体抽象为对象,方便问题的解决。在做程序设计的时候,虽然说某种语言是纯面向对象的,但是其中或多或少都有面向过程的成分存在,因为我们的思维,本来就是面向过程的。我们定义类作为新的数据类型,定义类的方法与属性作为新数据类型的方法与属性,然后我们操作这些数据类型为我们完成一些事情。我们像使用int一样使用person类,当完成了这些设计,需要用到面向过程的思想帮助我们完成全局的工作
    • 访问权限控制
      在python中,所有类属性都是公开的,唯一能为访问权限控制做的就是混淆变量。(与java注意区分)
    • 创建类
      class ClassName(bases):
          ' class docs'
          class suite
      
    • 类的属性
      • 数据
        类的数据属性可以类比java语言中的静态变量,为类所有,由于没有访问权限控制,所有内容都可以访问该类的静态属性



        对象的数据可以动态添加



        类的特殊属性

        使用dir命令来查看类的属性
      • 方法
        python规定所有的方法都必须通过实例来调用

        • 构造器方法
          python对类进行实例化时,一旦对象被创建,python检查该类是否实现了_init_()方法,如果实现了,就执行该方法。如果有一些初始化的操作,放在这个方法里是一个不错的选择。当我们在代码中使用继承,如果重写了子类的_init_()方法,那么它就不会主动调用父类的_init_()方法,而需要我们在子类构造函数中显式调用
        • 静态方法与类方法(类比java理解)
          class TestStaticMethod:
              @staticmethod
              def foo():
                  print "calling static method foo()"
          
          class TestClassMethod:
              @classmethod
              def foo(cls):
                  print 'calling class method foo()'
                  print 'foo() is part of class:', cls.__name__
          
        • 面向对象程序设计有一些共有的特性,比如继承、组合、覆盖,我们可以类比其他语言如java、c++来理解。我们重点来看一下访问权限控制,在java中为类属性提供了访问权限控制修饰符,但在python中不提供这样的修饰符。如果我们希望某个变量对外界屏蔽,那么在该变量名称前加上双下划线__,该变量会被混淆为__classname__varname。如果是简单的模块级别的私有化,只需要在变量前加单下划线_,防止被导入其他模块
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,906评论 17 410
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,113评论 0 13
  • { "Unterminated string literal.": "未终止的字符串文本。", "Identifi...
    Elbert_Z阅读 10,754评论 0 2
  • 2017年8月30日 囡囡终于开始了学游泳 过程很苦逼 喝水都喝的打饱嗝了 浑身消毒水味儿 教练还不断指手画脚 一...
    请叫我女神囡囡阅读 253评论 0 0
  • 今天上午我读了成语故事叫塞翁失马。 古代有个老人叫塞翁,一天他家的一匹马跑了,邻居们都很惋惜,但是塞翁...
    吴广泽阅读 373评论 0 1