python笔记

2017-8-28    分类: python

0,执行python

python hello.py

或者

//hello.py
#!/usr/bin/env python //在要执行的文件最前面加上,这样可以省去写python
# -*- coding: utf-8 -*- //不写这个输出的中文可能出现乱码
...代码
chmod a+x hello.py //给执行的权限
./hello.py //直接执行不需要在前面加python

 

1,变量 跟js一样

 

2,运算符
整数和整数进行运算时只能取整,例如:
3/2 = 1

如果想保留小数那么就:
3.0/2=1.5
3.0//2=1

平方
3**2=9

 

3,类型(python可以根据值来定义类型)
整数int -2,147,483,648到2,147,483,647
例如:num=123123 //默认int,如果长度超过int,类型就会自动变为long类型

 

浮点数float
例如:num=1.0

 

字符串,例如
str='abcde'

 

布尔类型
True False (在进行条件判断时,首字母一定要大写)

 

字符串的属性和方法
str='abcde'
[] //获取字符串指定内容
len() //返回长度
+ //拼接
* //重复几次
in //判断是否在字符串中,返回布尔值
max() //返回最大值
min()
cmp() //字符串之间比较,返回值有1,-1,0

 

注意:当我们声明一个变量str='123'即使改变了值为str='111',其实也是重新开辟了一个人内存空间,也就是说
我们并没有修改之前的值,只是另外开启了一个新的内存空间。

 

 

4,元组(类似数组)
t=() //空元组
t1=(1,) //只有一个元素的元组,必须加逗号
t2=('aa',123) //一般元组
t2[0] //获取元组第一个元素
a,b=('aa',123) //将元组内容对应声明给一个变量
元组一旦创建了就不能修改,否则报错

 

5,列表 (类似数组)
t1=[1] //只有一个元素的元组
t1[0] //获取列表第一个元素
t1.append('hello') //在末尾添加一个元素为hello
t1.remove('hello') //删除指定内容
del(t1[0]) //删除t1第一个元素
列表里面的元素是可以修改的。

 

6,字典 (类似对象)
obj={'name':'chen'}
obj['name'] //取值
obj['name']='ge' //修改
obj['age']=11 //添加额外索引值(不一定添加到末尾)
del(obj['name']) //删除指定索引
obj.pop('name') //删除指定索引,返回删除的值
obj.clear() //删除obj里面所有内容

字典(既是对象)有自己的方法:
//清除字典所有内容
obj.clear()

//取值,如果值不存在返回自定义的内容
obj.get(5,'自定义内容')

//返回字典的全部索引值,以列表类型返回
obj.keys()

//返回字典所有值,以列表类型返回
obj.values()

 

 

 

7,语法

*python的语法没有花括号{}来区分代码块,所以用缩进的形式进行区分。类似jade模板一样。
连接符号是+

 

 

8,逻辑运算符

and or not
类似js的
&& || !

 

9,条件语句
if else

if True:
print 1
else:
print 2

 

if 1==1:

elif 2==2:

else:

 

10,遍历

for x in "abcd":
print x+"1" //循环4次

 

for x in [0,1,2,3]:
print x+"1" //循环4次

 

range(5) //[0,1,2,3,4]
range(1,6) //[1,2,3,4,5]
range(1,6,2)//[1,3,5]

 

for x in range(100):
print x+"1" //循环100次

 

(类似js的for(){}语法)
x=0
while x<10:
print "1"
x+=1

 

 

11,函数

def run(a,b):
c=a+b
print c

run(1,1)

 

 

12,作用域(跟js的理解一样,重点是如何让一个局部变量变为全局变量)

//声明
def run():
global x
x=123

 

//调用
run()

 

 

13,匿名函数lambda,(作用是让函数变的简单,类似于js的三元表达式是if else的简写)

g=lambda x:1+x
print g(3) // 4

 

相当于

 

def g(x):
return x+1
print g(3) // 4

 

 

14,python自带函数,(有很多,这里我们推荐常用的)

http://www.jb51.net/article/60896.htm

 

 

15,模块

//被调用包 a.py
def g(x):
return x+1

if __name__=='__main__':
print 'ziji' //a.py调用自己时触发
elif __name__=='a':
print 'zhiyou_a' //只有引入a.py时被触发

 

//调用包 b.py
import a
print a.g(3)

 

如果希望被指定的包调用那么就利用__name__做判断

 

16,包,多个模块存放在一个文件夹下就组成一个包

在一个文件夹根目录下创建一个名字为__init__.py

 

1,在一个文件夹名为bao下创建一个文件名为__init__.py的文件

2,在bao文件夹下创建一个a.py内容是
def g(x):
return x+1

3,调用包里面的a.py里面的g函数

import bao.a //包名就是文件夹名
print bao.a.go(2)

 

关于导入包的方式:
1,import 包/模块

2, import 包/模块 as 自定义名

3, from 包/模块 import 模块/函数名 (推荐使用)

 

17,正则

 

 

 

18,本地文件读、写操作

r 只读
r+ 读写,相当于追加内容。注意,必须打开文件后在读取内容后在写入,这样才是追加效果。如果打开后就直接写入就是覆盖原来内容效果了。
w 写入,先删除文件后写入,如果没文件就创建 (会删除文件慎用)
w+ 读写,先删除文件后写入,如果没文件就创建(会删除文件慎用)

 

fo=open('/root/1.txt','r+') //打开文件
fo.read() //查看内容
fo.write("/n hahahah") //追加内容
fo.close() //看完后关闭

python