python学习笔记【1】(第二章:python的基础语法)

来源:互联网 发布:网络大仲马什么意思 编辑:程序博客网 时间:2024/05/16 02:08

笔记自《零基础学python》

含部分习题答案。

记录python学习过程w.


第二章:python的基础语法

2.1 python的文件类型

2.1.1源代码:

py结尾,可在控制台下运行,不用编译。pyw是图形用户接口。也可直接用文本工具打开修改。

2.1.2字节代码:

pyc不能直接修改。通过脚本生成,代码如下

import py_compilepy_compile.compile('hello.py')

2.1.3优化代码:

pyo用命令行工具生成

cd /D D:\python2\example进入hello.py所在目录

python -O -m py_compile hello.py

-O表示生成优化代码,-m表示导入的模块作为脚本运行

2.2 python编码规范

2.2.1 命名规则

1.变量名,包名,模块名:小写,可用下划线

2.类名,对象名:类名首字母大写,对象名小写。类的属性和方法名以对象为前缀。类的私有变量私有方法以两个下划线为前缀。例如

class Student:# 类名大写    __name = ""# 私有实例变量前必须有两个下划线    def __init__(self, name):        self.__name = name # self相当于Java中的this    def getName(self):# 方法名首字母小写,其后每个单词的首字母大写        return self.__nameif __name__ == "__main__":    student = Student("borphi")# 对象名小写    print(student.getName())

3.函数名:通常小写,用下划线或者首字母大写增加可读性,导入的函数以模块名为前缀

2.2.2 代码缩进与冒号

不建议使用tab键,手打四个空格比较好。

2.2.3 模块导入的规范

  1. import语句:使用import后空一行写语句。import语句是导入模块中的部分内容,并在当前的命名空间中创建导入对象的引用。

  2. from…import语句:from…import语句在当前程序的命名空间中创建导入模块的引用,从而可以使用“sys.path”的方式调用sys模块中的内容。不建议使用。

2.2.4 使用空行分隔分隔代码

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,突出函数入口的开始。

下面代码创建了类A,类A中定义了两个方法funX()和funY()

class A:def funX(self):    print( "funY() ")def funY(self):    print( "funX() ")if __name__ == "__main__":    a = A()    a.funX()    a.funY()

2.2.5 正确的注释

################################## 对一行代码注释,用#加上若干空格开始。# 对一段代码注释,用#,段落之间以一个#分隔。#################################

特殊注释:

  1. 需使用中文注释: # -- coding: UTF-8 --

  2. 跨平台注释: # !/usr/bin/python

2.2.6 语句的分隔

python支持分号,但是仅作为语句结束标识,可有可无。但如果在一行中书写多个语句,需用分号分隔。x=1; y=2; z=3

多行写一条语句用 \ 作为换行符。例如sql语句

sql = "select id,name \from dept \where name = 'A'"print (sql)

2.3 变量和常量

2.3.1 变量的命名

字母、数字、下划线

2.3.2 变量的赋值

不用声明变量,变量的赋值操作就是变量声明和定义的过程,每个变量在内存中创建,都包括变量的标识、名称和数据的信息。

# 一次新的赋值操作,将创造一个新的变量x = 1print (id(x))  # 11229424x = 2print (id(x))   # 11229412

同时赋值操作:(序列的装包和拆包操作)

a = (1, 2, 3)(x, y, z) = aprint ( "x = ", x)    # x = 1print ( "y = ", y)    # y = 2print ( "z = ", z)    # z = 3

2.3.3 局部变量

局部变量的作用范围只在其被创建的函数内有效。

2.3.4 全局变量

能够被不同函数、类或文件共享的变量,(在函数外定义的变量。)通常在文件的开始处定义,eg

_a = 1_b = 2def add():    global _a       # global用于引用全局变量    _a = 3          # 对全局变量_a重新赋值(本函数内)。    return "_a + _b = ", _a + _bdef sub():    global _b    _b = 4    return "_a - _b = ", _a - _bprint(add()) # 5print(sub()) # -3

或者把全局变量放在一个专门的文件中,统一管理修改,创建一个名为gl.py的文件,文件内容如下:

# 全局变量_a = 1_b = 2

然后在别的文件里引用。use_global.py内容如下

# 调用全局变量import gldef fun():    print(gl._a)    print(gl._b)fun()

2.3.5 常量

一旦初始化就不能改变的常量

# -*- coding: UTF-8 -*- class _const:                               # 定义常量类_const    class ConstError(TypeError): pass       # 继承自TypeError    def __setattr__ (self, name, value):        if self.__dict__.has_key(name):           # 如果__dict__中不包含对应的key则抛出错误            raise self.ConstError, "Can't rebind const(%s)"%name        self.__dict__[name] = valueimport syssys.modules[__name__] = _const()            # 将const注册进sys.modules的全局dict中

用于定义常量模块

2.4 数据类型

2.4.1 数字

整型、浮点型、布尔型、分数类型、复数类型。C创建了一个int型的普通变量,而python创建的是一个整型对象,python并不能修改对象i的值。

# 下面两个i并不是同一个对象i = 1print (id(i))i = 2print (id(i))

可以用type类查看变量类型。可以复数。c = 7 + 8j

2.4.2 字符串

三种方式表示字符串。单引号,双引号,三引号。单引和双引作用是一样的。三引号是特殊用法,其中可以输入单引,双引和换行。

# 三引号用法str = '''he say "helloworld!"'''print (str)

三引号另一用法是制作文档字符串,python的每一个对象都有一个属性_doc_。用于描述该对象的作用。

# 三引号制作doc文档class Hello:'''hello class'''    def printHello:    '''print hello world'''    print ("hello world!") # hello world!print (Hello.__doc__) # hello classprint (Hello.printHello.__doc__) # print hello world

其实感觉有点儿像另一种注释←

如果需要输出含有特殊字符的字符串,需要使用转义字符。使用双引号或三引号可以直接输出含有特殊字符的字符串,不需要使用转义字符。留空格的特殊情况:str = ”’he say: ‘hello world’ ”’ # 区分三引号和单引号。空格分开

2.5 运算符与表达式

2.5.1 算术运算符和算术表达式

** 求幂运算。python不支持自增和自减运算符。

对除法处理时python2和python3有所不同:整型除法返回浮点数,要得到整型结果,请使用//

python2: 1 / 2 = 0python3: 1 / 2 = 0.5

2.5.2 关系运算符和关系表达式

取消python2中<>的表示方式,统一使用 != 作为不等于的符号。

< <= > >= 优先级高于 == !=

2.5.3 逻辑运算符和表达式

and or not 例子看表达式优先级

print ("not 1 and 0 =>", not 1 and 0)       # Falseprint ("not (1 and 0) =>", not (1 and 0))   # Trueprint ((1 <= 2) and False or True)          # Trueprint ((1 <= 2) or 1 > 1 + 2)               # True

第二章习题:​

  1. 以下变量命名不正确的是:(B D)

A. foo = the_value​ B. foo = 1_value C. foo = value D. foo = value&

  1. 计算2的38次方的值
  print(2**38)
  1. 以下逻辑运算的结果

a) True and False -> False b) False and True -> False

c) True or False -> ​True c) False or True -> True

d) True or False and True -> True e) True and False or False -> False

  1. 编写程序计算1+2+3+…+100的结果
sum = 0for x in range(1, 101):    sum = sum + xprint(sum)

0 0