python学习笔记(一)

来源:互联网 发布:matlab分水岭算法代码 编辑:程序博客网 时间:2024/05/16 05:51

           这段时间,为了学习django的web开发,于是开始学习python。得力于之前本科时C++和java的学习,现在学Python很快就上手了,基本的语法什么的,很快就懂了,这里稍微做一点笔记记录python和其他语言不同的地方,也是我觉得需要注意的地方。http://www.w3cschool.cc/python/python-tutorial.html这个是基础的教程,我一开始就是跟着这个学的。这只是简单的一些内容,以后会找个时间系统的学习一下。

       Python是一种解释型、面向对象、动态数据类型的高级程序设计。解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。交互式语言:这意味着,您可以在一个Python提示符,直接互动执行写你的程序P面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术

(1)Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行 以新行作为为语句的结束符。但是可以使用斜杠( \)将一行的语句分为多行显示,但是如果包含[], {} 或 () 括号就不需要使用多行连接符。

       注释采用#,还有一种文档字符串的特别注释。你可以在模块、类或者函数的起始添加一个字符串,起到在线文档的功能。与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。

(2)Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。在使用前都必须赋值,变量赋值以后该变量才会被创建。

(3)Python有五个标准的数据类型:

  • Numbers(数字):int  long(L)  float complex

  • String(字符串):python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1,从右到左索引默认-1开始的,最大范围是字符串开头。+是字符串连接运算符,星号(*)是重复操作(print str*2输出两个str);[:]表示截取字符串的一部分

  • List(列表):list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。

  • Tuple(元组):用"()"标识。内部元素用逗号隔开。但是元素不能二次赋值(不能修改也不能删除),相当于只读列表,只有一个元素时要留有逗号a=(1,);可以使用del删除整个元祖

  • Dictionary(字典):用"{ }"标识,由索引(key)和它对应的值value组成。结构类似json

       列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。python创建对象后,数据类型是不允许改变的,只能用del var1,var2来删除多个对象。

       字典:字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,键必须不可变,可以用数,字符串或元组充当,但不可以用列表就不行,

(4)**:幂运算 2**3=8

           //:取整数 返回商的整数部分  9.0//2.0=4.0

          and:(a and b) 返回 true,类似的有or 和 not

          in:成员运算符   x in y 如果x在y中,则为TRUE,not in 表示为x不在y中怎为TRUE 

          is :身份运算符  is是判断两个标识符是不是引用自一个对象(返回结果 1),is not是判断两个标识符是不是引用自不同对象

(5)if 判断条件:

          执行语句……

         else:(elif 判断条件:)

          执行语句……

 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or 或and

      while 判断条件:

            执行语句……

      else:

      在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而

中断的)的情况下执行,while     … else 也是一样。while 可以循环嵌套

        for循环语句:for itareting_var in sequence

                              statement(s)

(6)函数

  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

注意:所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。

(7)模块

模块就是一个Python文件,只有导入import了模块你才能使用模块里的函数。当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。from  modname  import   funcname1,funcname2....导入某模块中的具体某个函数。模块搜索路径存存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH(就是Python中lib的路劲)和由安装过程决定的默认目录。一个Python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。

(8)命名空间

每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。Python会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。因此,如果要给全局变量在一个函数里赋值,必须使用global语句。global VarName的表达式会告诉Python, VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了。

a=0;def sum():     global a    #若将其注释掉将出现错误 
                 #UnboundLocalError: local variable 'a' referenced before assignment     a +=1print a
(9)包是一个分层次的目录结构,例如你要在A文件夹下有三个a1.py,a2.py,a3.py。这时可在A下创建__init__.py文件,然后再里面使用显示的导入语句,import a1 from a1; import a2 from a2; import a3 from a3;  这样就导入A包的时候这些类就全都是可用的了,import A;  A.a1();这就是包的使用方法。

(10)面向对象

在python中实现数据隐藏很简单,不需要在前面加什么关键字,只要把类变量名或成员函数前面加两个下划线即可实现数据隐藏的功能,这样,对于类的实例来说,其变量名和成员函数是不能使用的,对于其类的继承类来说,也是隐藏的,这样,其继承类可以定义其一模一样的变量名或成员函数名,而不会引起命名冲突。Python不允许实例化的类访问隐藏数据,但你可以使用object._className__attrName访问属性。

class classname(supclass):         a =          def  function(self,parameters)               return         def  function2(self)               return
类里面每个方法都有一个self参数,作用和this一样。


0 0