zoukankan      html  css  js  c++  java
  • Python学习3一切皆对象

    物理行与逻辑行的区别

    在Python中缩进和空白是很重要的。

    同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。

    如何缩进

    不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我 强烈建议 你在每个缩进层次使用 单个制表符 或 两个或四个空格 。

    选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。

    内建raw_input函数提供一个字符串,用于用户输入。

    在python总语句结尾的冒号代表后面跟着的是一个语句块

    在python中没有switch语句。(证实)可以用if...elif...else

    布尔型变量。

    for的使用 for i  in range(1,5):  进行循环

    #!/usr/bin/python
    #Sat Jan 5 18:38:13 CST 2013
    for i in range(1,5) :
         print (i)

    函数:函数通过def关键字定义,def关键字后一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。

    #/usr/bin/python
    #Sat Jan 5 19:02:52 CST 2013
    def sayH() :
         print ("Hello function!")
    sayH()

    函数形参:函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。

    参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语——函数中的参数名称为 形参 而你提供给函数调用的值称为实参 。

    #!/usr/bin/python
    #Sat Jan 5 19:08:37 CST 2013
    def Max (x ,y) :
              if x>y :
                   print (x)
              else :
                   print (y)
    Max(4,6)

    局部变量:

    全局变量用global进行修饰变量。没有global语句,是不可能定义在函数外的变量赋值的。也可以定义在函数外边(不鼓励这样定义)。因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global语句可以清楚地表明变量是在外面的块定义的。

    默认参数值

    在函数中的关键参数。当多个参数的时候,只赋值给一定的变量需要用定义。

    Python有一个很奇特的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!


    Python中的模块:模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。

    模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们将学习如何使用标准库模块。

    模块是如何工作的:首先,我们利用import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。

    当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。

    sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。

    字节变异的.pyc文件。

    from .. import语句

    模块的__name__

    模块相当于类。

    模块的使用方法:

    import 模块名

    模块名.函数

              或: from 模块名 import 函数名

    dir()函数。很重要。

    删除变量:del 变量名

    运用os.system()函数运行命令,使用前需加载相关os模块。

    python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。or也是从左到有计算表达式,返回第一个为真的值。(与其他语言不太相同)


    我们已经走过了编写一个软件的各个环节。这些环节可以概括如下:

    1. 什么(分析)

    2. 如何(设计)

    3. 编写(实施)

    4. 测试(测试与调试)

    5. 使用(实施或开发)

    6. 维护(优化)


    类和对象

    类使用class关键字创建,类的域和方法被列在一个缩进块中。

         类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

         虽然你可以给这个参数任何名称,但是 强烈建议 你使用self这个名称——其他名称都是不赞成你使用的。使用一个标准的名称有很多优点——你的程序读者可以迅速识别它,如果使用self的话,还有些IDE(集成开发环境)也可以帮助你。

    给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。

    你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1,

    arg2)——这就是self的原理了。

    这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

    self相当于php、java中的this。

    __int__方法:__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。

    #!/usr/bin/python
    #Mon Jan 7 17:02:03 CST 2013
    class Person :
         def __init__(self,name):
              self.name=name
         def sayHi(self) :
              print "Hello,my name is ",self.name
    p = Person('Swaroop')
    p.sayHi()

    python中的__init__方法相当于php中的构造方法__construct()

    有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。

    类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。

    对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。通过一个例子会使这个易于理解。

    给C++/Java/C#程序员的注释

    Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。

    只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。

    这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。

    同样,注意__del__方法与 destructor 的概念类似。

    继承:面向对象编程的主要好处就是代码的复用。实现这种服用的方法之一是通过继承机制。集成完全可以理解成类之间的类型和子类型的关系。

    Python不会自动调用基本类的constructor,你得亲自专门调用它。

  • 相关阅读:
    初心不负 笔记-JS高级程序设计-引用类型篇-Array
    CSS-样式篇
    笔记-JS高级程序设计-变量,作用域和内存问题
    笔记-JS高级程序设计-基本概念篇
    WPF 10天修炼 第四天- WPF布局容器
    WPF 10天修炼 第三天- Application全局应用程序类
    WPF 10天修炼 第二天- XAML语言
    WPF 10天修炼 第一天- 入门
    C# 关于e.Handled 的说明
    C# Replace方法
  • 原文地址:https://www.cnblogs.com/linuxer/p/2889959.html
Copyright © 2011-2022 走看看