您的位置:首页 > 编程语言 > Python开发

Python学习笔记与记录

2017-09-06 16:40 246 查看
学习Python的语法与用法记录

break语句:

    break用于将整个循环终止,当运行break后,循环将会跳出

    

continue语句:

    用于跳过continue后面的语句,直接进行下一次循环

    

pass语句:

        Python pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,

    一般用做占位语句。

Number:

        Number数据类型用于存储数值。和C/C++中的数据类型是一样的。不同之处在于

    python的变量类型不用声明,变量只有在赋值了以后才可以使用,才有意义。

    

    

用del语句删除一些 Number 对象引用。del语句的语法是:

    del var1[,var2[,var3[....,varN]]]

也可以通过使用del语句删除单个或多个对象,例如:

    del var

    del var_a, var_b

    

Python中的转义字符

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

   转义字符        |        描述

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

    \(在行尾时) |    续行符

    \\             |    反斜杠符号

    \'             |    单引号

    \"             |    双引号

    \a             |    响铃

    \b             |    退格(Backspace)

    \e             |    转义

    \000         |    空

    \n             |    换行

    \v             |    纵向制表符

    \t             |    横向制表符

    \r             |    回车

    \f             |    换页

    \oyy         |    八进制数,yy代表的字符,

                |    例如:\o12代表换行

    \xyy         |    十六进制数,yy代表的字符,

                |    例如:\x0a代表换行

    \other         |    其它的字符以普通格式输出

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

Python中字符串格式化符号:

   符   号          描述

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

      %c     格式化字符及其ASCII码

      %s     格式化字符串

      %d     格式化整数

      %u     格式化无符号整型

      %o     格式化无符号八进制数

      %x     格式化无符号十六进制数

      %X     格式化无符号十六进制数(大写)

      %f     格式化浮点数字,可指定小数点后的精度

      %e     用科学计数法格式化浮点数

      %E     作用同%e,用科学计数法格式化浮点数

      %g     %f和%e的简写

      %G     %f 和 %E 的简写

      %p     用十六进制数格式化变量的地址

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

Python的三引号

    三引号可以将复杂的字符串进行复制

    允许一个字符串跨多行,字符串可以包含换行符、制表符

    以及其他特殊字符。

    

Python中的元组和列表

    列表和元组类似,和C/C++中的数组相似。列表和元组的

    不同之处在于元组元素不能修改而列表可以。

    其中:

    1.列表用[]表示,例如:list1 = ['physics', 'chemistry', 1997, 2000]

    2.元组用()表示,例如:tup1 = ('physics', 'chemistry', 1997, 2000);

Python的字典:

    字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值

    (key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典

    包括在花括号({})中 ,格式如下所示:

            d = {key1 : value1, key2 : value2 }

            

            

Python中的函数:

    可以定义一个由自己想要功能的函数,以下是简单的规则:

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

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

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

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

        5.return [表达式] 结束函数,选择性地返回一个值给调用方。

        不带表达式的return相当于返回 None。

        可更改(mutable)与不可更改(immutable)对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

    不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,

    而 5 被丢弃,不是改变a的值,相当于新生成了a。

    可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第二个元素值更改,本身la

    没有动,只是其内部的一部分值被修改了。

    

    

Python 模块

    1.模块能够有逻辑地组织你的Python代码段。

    2.把相关的代码分配到一个 模块里能让代码更好用,更易懂。

    3.模块也是Python对象,具有随机的名字属性用来绑定或引用。

    4.简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的

    代码。

    

    

    

读取键盘输入

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:

    1.raw_input

    2.input

    

    

    

self代表类的实例,而非类

    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

例:

class Test:

    def prt(self):

        print(self)

        print(self.__class__)

t = Test()

t.prt()

以上实例执行结果为:

<__main__.Test instance at 0x10d066878>

__main__.Test

    从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的。

也可以使用以下函数的方式来访问属性:

    getattr(obj, name[, default]) : 访问对象的属性。

    hasattr(obj,name) : 检查是否存在一个属性。

    setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。

    delattr(obj, name) : 删除属性。

例:

    hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。

    getattr(emp1, 'age')    # 返回 'age' 属性的值

    setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8

    delattr(empl, 'age')    # 删除属性 'age

    

    

    

    

类的继承

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

需要注意的地方:继承语法 class 派生类名(基类名)://... 基类名写在括号里,基本类是在类定义的时候,在元组之中指明的。

在python中继承中的一些特点:

    1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。

    2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数

    3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。

如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。

方法重写

    如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:

实例:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Parent:        # 定义父类

   def myMethod(self):

      print '调用父类方法'

class Child(Parent): # 定义子类

   def myMethod(self):

      print '调用子类方法'

c = Child()          # 子类实例

c.myMethod()         # 子类调用重写方法

类属性与方法

类的私有属性

    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

类的方法

    在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数

类的私有方法

    __private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods

    

    

Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName 访问属性。

网路编程

什么是 Socket?

    Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

    

在python中发现,如果用    

for i in range(0, 5):

        print '*',

则输出的是 * * * * *

而用

for i in range(0, 5):

        print '*'

则输出的是     *

            *

            *

            *

            *

            

print后面没有写任何东西,是起到换行的作用

当函数有多个参数时,如果你想给部分参数提供默认参数,那么这些参数必须在参数的末尾

__name__和__main__的作用

如果用到

if __name__ == "__main__"

则可以用来判断当前执行的文件是否是本文件,__name__是当前文件的名字

声明:s为字符串,rm为要删除的字符序列

    s.strip(rm)       删除s字符串中开头、结尾处,位于 rm删除序列的字符

    s.lstrip(rm)      删除s字符串中开头处,位于 rm删除序列的字符

    s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

    

    

可以在语句末尾增加一个as子句,在改子句后面给出名字,或为整个模块提供别名

    import math as foobar

    foobar.sqrt(4)

    

    

在函数中,参数前面放置星号※是将所有参数放在同一个元组中。也就是说可以定义多个参数。

    HttpResponse ,它是用来向网页返回内容的,就像 Python 中的 print 函数一样,只不过

 HttpResponse 是把内容显示到网页上。(其实是对数据的一个传递,这里为了简单理解,我们

 可以当做一个输出函数来看待。)

 

 

对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。

    但是对于表来说,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有

内存中进行,从而影响原有变量。

生成器(generator)的主要目的是构成一个用户自定义的循环对象。

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

f = open("new.txt", "w")

print(f.closed)             

f.write("Hello World!")

f.close()

print(f.closed)

=================================         这两段代码表示的含义是一样的

with open("new.txt", "w") as f:

    print(f.closed)

    f.write("Hello World!")

print(f.closed)

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

    任何定义了__enter__()和__exit__()方法的对象都可以用于上下文管理器。文件对象f是内置对象,所以f自动带

有这两个特殊方法,不需要自定义。

capitalize()方法返回字符串的一个副本,只有它的第一个字母大写。对于8位的字符串,这个方法与语言环境相关。

hasattr(object, name)

    判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。

需要注意的是name要用括号括起来

getattr(object, name[,default])

    获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。

需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,

可以在后面添加一对括号。

setattr(object, name, values)

    给对象的属性赋值,若属性不存在,先创建再赋值。

    

    

callable(object)

中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

-------

迭代器:

    是一个实现迭代协议的容器对象。他基于两个方法:

        · next 返回容器的下一个项目

        · _iter_ 返回迭代器本身。

    迭代器可以通过使用一个iter内建函数和一个序列来创建

-------

    

-------

生成器:

    带有yeild函数,使得需要返回一系列元素的函数所需的代码更加简单、高效。

基于yield指令,可以暂停一个函数并返回中间结果。该函数将保存执行环境

并且可以在必要时恢复

    yeild函数的作用是将数保存成一个列表list

    

    python引入的于生成器相关的最后一个特性是提供了于next方法调用的代码进行交互的功能。yeild将变成一个表达式,

而一个值可以通过名为send的新方法来传递。

item()

    item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回。

    例:

    s = {"name": "zhangsan", "address":"beijing"}

    def test():

        data = {}

        for k,v in s.items():

            print k, v

    test()

    

    输出结果为

    name zhangsan

    address beijing

    

Python lower() 方法转换字符串中所有大写字符为小写。

join用法:

    str1 = ["name","password"]

    str2 = "user"

    str3 = ""

    sql = 'select %s from %s %s limit 1' % ( ','.join(str1), str2, str3 )

    print sql

    输出的结果是:select name,password from user limit

    

    str1 = "name"

    str2 = "user"

    str3 = ""

    sql = 'select %s from %s %s limit 1' % ( ','.join(str1), str2, str3 )

    print sql

    输出的结果是:select n,a,m,e from user limit

    

    结论:(,)join可以将元组分开
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 语法