python基础

python

语言特点

解释型脚本语言

  • 内建

    • 高级的数据结构

面向对象的语言

  • 便于

    • 数据和逻辑相分离

动态语言

  • 变量本身

    • 类型不固定
    • 可随意转换

不用考虑

  • 内存问题

默认编码

  • UTF-8

基本规则

  • 注释

\n

  • 行分隔符

\

  • 继续上一行

  • 跨行特例

    • 闭合操作符

      • 各种括号

        • {}, 【】,()
    • 三引号

      • 常用于[多行注释]

;

  • 在同一行

    • 连接多个语句

      • 可读性低不提倡

  • 分开代码块(组)

    • 头&体

缩进块

  • 语句(代码块)

    • 用缩进深度(4空格)区分

空行

  • 用于分隔

    • 函数

模块

  • 每一个脚本文件

    • 均为模块
    • 一磁盘文件形式存在
  • 若模块过大

    • 考虑

      • 拆解代码
      • 另建模块

多元赋值

  • x,y,z=1,2,3

    • 一一对应(最好用小括号括起来)

输出

  • print

输入

  • raw_input

列表元素

  • 类似于数组
  • 切片操作[from, to] 截取from到to 含from,不含to

字典元素

  • { }键值对

文件

  • 打开

    • handle= open(file_name, access_mode = ‘r’)
  • 关闭

    • handle.close()

函数定义

  • def function_name([arg]):
    “optional documentation string”
    function_suite

类中

  • init()

    • 相当于构造函数,类创建时自动执行
  • self

    • 每个方法都有这个参数,相当于this

内存管理

  • 变量无须事先申请
  • 变量无须指定类型
  • 程序员不用担心内存管理
  • 变量名会被“回收”
  • del 语句能够直接释放资源

函数

创建函数

def function_name(arguments):
“function_documentation_string”
function_body_suite

前向引用:Python 也不允许在函数未声明之前,对其进行引用或调用

函数中使用默认参数会使程序的健壮性上升到极高的级别。

函数式编程的内建函数:

  • Filter(func, seq):

    • 调用一个布尔函数 func 来迭代遍历每个 seq 中的元素;返回一个使 func 返回值为 true 的元素的序列
  • Map(func, seq1[,sql2…]):

    • 将函数 func 作用于给定的序列 seq 中的每个元素,并用一个列表来提供返回值
  • Reduce(func, seq):

    • 将一个二元函数作用于 seq 序列的元素,每次携带一对(先前的结果以及下一个序列元素),连续地将现有的结果和下一个值作用,最后减少我们的序列为一个单一的返回值

变量作用域

  • 全局变量除非被删除,否则它们存活到脚本运行结束,且对所有的函数都是可访问
  • 为了明确地引用一个已命名的全局变量,必须使用 global 语句。

模块

语法

  • import module1[,module2[,…]]
  • from module import name1*,name2*,…++
  • from module import name as shortname
  • from module import *

import 语句的模块顺序

  •  Python 标准库模块
  •  Python 第三方模块
  •  应用程序自定义模块

禁止模块的某个属性导入,可以在该属性名称前加一个下划线:import foo._bar

对象

特性

  • 身份
  • 类型

内建函数type()

  • 获取对象的类型

None

  • NULL对象

切片对象

  • sequence

    • [起始索引:结束索引:步进值]

标准类型内建函数

  • cmp(obj1, obj2)

    • 比较两个对象,返回徽整型>0;=0;<0
  • repr(obj)或者obj

    • 返回obj的字符串表示
  • str(obj)

    • 返回obj适合可读性好的字符串表示
  • type(obj)

    • 返回obj的类型

str(),repr(),`` 三者的比较

  • str():生成一个对象的可读性比较好的字符串表示,对用户友好
  • repr():对 Python 比较友好
  • ``:效果跟 repr()一样,建议不再使用

type()和 isinstance()

  • type(obj):返回 obj 的类型
  • isinstance(obj,obj_type):判断 obj 是否为 obj_type 类型,返回布尔值

可变类型:列表、字典

不可变类型:数字、字符串、元组

不支持的类型:

char 或 byte:无

指针:无

int VS short VS long : 无区别

float VS double :无区别

文件和输入输出

文件内建函数open()和file()

  • open()语法:file_object = open(file_name, access_mode=‘r’,buffering=-1)
  •  open()和 file()函数具有完全相同的功能,一般来说,建议使用 open()来读文件,在你想说明你是处理文件对象的时候使用 file(),例如 if isinstance(f, file)

文件内建方法

  • 输入:read(),readlines(),for eachLine in file
  •  输出:write(),writelines() [注:没有 writeline()方法]
  •  文件内移动:seek() 0,1,2 分别代表文件开头,当前位置,文件末尾

命令行参数:

  • sys.argv 是命令行参数的列表
  •  len(sys.argv)是命令行参数的个数(也就是 argc)

数据类型

数字

  • 长整型

    • 使用大写的L表示
  • 复数

    • 虚数不能单独存在。必须加上 0.0 的实数部分
    • 由实数+虚数两部分构成
    • 实数跟虚数部分都是浮点型
    • 虚数部分后缀是 j 或 J
  • 复数属性

    • num.real 该复数的实数部分
    • num.imag 该复数的虚数部分
    • num.conjugate() 返回该复数的共轭复数
  • 混合模式优先级(转化): complex > float > long > int

  • 幂运算(**)

    • 比左侧操作数的一元运算符优先级低,比右侧操作数的一元运算符优先级高。
    • eg: -3 ** 2 = -9 4.0 ** -1.0 = 0.25
  • 位操作符

    • 只适用于整型
    • 取反(~),安位与(&),或(|),异或(^),左移(<<),右移(>>)
    • 负数当做正数的 2 进制补码处理
    • num <<( 或 >> )N = num * ( 或 / )2 ** N
  • int(obj, base) : 返回 obj 数字的 base 进制数

  • 数值运算内建函数

    •  abs(num) num 的绝对值
    •  coerce(num1, num2) 转化为同一类型,返回一个元组
    •  divmod(num1, num2) 返回元组(num1/num2, num1%num2)
    •  pow(num1, num2, mod=1) 取 num1 的 num2 次方,若有 mod,则对其再取余
    •  round(flt, ndig=1) 对浮点型 flt 进行四舍五入,保留 ndig 位小数
  • 仅适用于整型的内建函数

    • hex(num) 将 num 转化为十六进制,并以字符串返回
    •  otc(num) 将 num 转化为八进制,并以字符串返回
    •  chr(num) 返回 num 的 ASCII 值,范围:0 <= num <= 255
  • “ True”和“ False”严格区分大小写!且分别对应“ 1”和“0”

字符串

列表

元组

字典

  • 例子

    dict1 = ,‘name’:’earth’,’port’:80-
    for key in dict1.keys():
    print ‘key=%s, value=%s’% (key,dict1*key+)

  • 内建函数

    •  dict.clear() 删除字典中的所有元素
    •  dict.fromkeys(seq, val=None) 返回一个新字典,seq 为键,val 为值
    •  dict.get(key, default=None) 返回字典中 key 的值,若无此键则返 default
    •  dict.has_key(key) 是否存在 key 键,返回布尔值
    •  dict.items() 返回一个包括字典中键值对元组的列表
    •  dict.keys() 返回一个字典中的键的列表
    •  dict.values() 返回一个包含字典中所有值的列表
    •  dict.update(dict2) 将字典 dict2 的键值对添加到字典 dict 中去
  • 不允许一个键对应多个值

    • 键必须是可哈希的对象。像列表和字典这样的可变类型,由于它们不是可哈希的,所以不能作为键

集合

  • 现已成为 Python 的基本数据类型

  • 两种类型:可变集合(set)和不可变集合(frozenset)

  •  可用 set()和 frozenset()来分别创建可变集合跟不可变集合

  • 内建函数

    • s.issubset(t) 判断 s 是否是 t 的子集,返回布尔值
    •  s.issuperset(t) 判断 s 是否是 t 的超集,返回布尔值
    •  s.union(t) 返回新集合,s 跟 t 的并集
    •  s.intersetion(t) 返回新集合,s 跟 t 的交集
    •  s.difference(t) 返回新集合,其成员是 s 的成员,但不是 t 的成员

流程控制

if判断

  • 例子

    if expression1:
    expr1_true_suite
    elif expression2:
    expr2_true_suite
    elif expression3:
    expr3_true_suite
    else:
    None_of_the_above_suite

  • 三元操作符

    • X if C else Y

不支持swich/case

while循环

  • while expressin:
    suit_to_repeat

for循环

  • for iter_var in interable:
    suit_to_repeat

pass语句

  • 表示不做任何事

数据库编程

Python 数据库 API

  • Python 能够直接通过数据库接口
  • 也可以通过 ORM(需要自己书写 SQL)
  • 来访问关系数据库

Python 应用程序(嵌入 SQL)-- Python DB 接口程序 — RDBMS 客户端库 — 关系数据库

以 MySQL 举例

import MySQLdb
cxn = MySQLdb.connect(user=’rooot’)
cxn.query(‘CREATE DATABASE test’)
cxn.commit()
cxn.close()


cxn = MySQLdb.connect(db=’test’)
cur = cxn.cursor()
cur.execute(‘CREATE TABLE users(login VARCHAR(8), uid INT)’)
0L

cur.execute(‘INSERT INTO users VALUES(‘john’, 7000)’)
1L

for data in cur.fetcharall():
print ‘%s\t%s’ % data
john 7000

cur.close()
cxn.commit()
cxn.close()

面向对象

利用 class 关键字创建一个类

  • class MyNewObjectType(bases): #bases 参数用于继承的父类
    ‘define MyNewObjectType class’
    Class_suite

创建一个实例的语法

  • myFirstObject = MyNewObjectType()

添加类方法

  • class MyDataWithMethod(object): #定义类
    def printFoo(self): #定义方法
    print ‘You invoked printFoo()’

类、属性和方法的命名方式

  • 类:通常大写字母打头。这是标准惯例。有助于识别类。
  • 属性:小写字母打头 + 驼峰,使用名词作为名字。
  • 方法:小写字母打头 + 驼峰,使用谓词作为名字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值