python入门
1 第一个python代码:
在linux上创建第一个.py脚本
#!/usr/bin/env python #-*- coding:utf-8 -*- print "Hello,World"
执行代码:
python hellp.py
2 捕获参数:
捕获参数,并存入到集合
print sys.argv
3 模块导入:
import hello
4 python编译:
经过编译 成字节码文件 .pyc文件,反编译成 .py
如果.pyc 和 .py 内容相同,则.pyc 优先级高,否则,先查找.py,再重新编译生成 .pyc 文件
5.变量:
声明变量:
name = "Hello,World"
变量命名规则:
1)变量名只能以 数字、字母、下划线组成
2)第一个字符只能为字母、下划线;不能为数字
3)不要使用内置变量名
name1 = "test1" name1 = name2
修改 name1 = "123"
name2 的值会跟着变吗?
答案是:不变
原因很简单:变量赋值时,会在内存中申请一块内存指针空间,将test1 赋值给 name1,相当于开辟了一块内存指针空间来存放 字符串test1,同时将 name2 = name1,相当于将 name2也同样指向这块内存指针空间,如果这个时候将字符串 “123”赋值给 name1,就相当于重新在内存中开辟一块内存指针来存储字符串 “123”,而name2 指针还是第原来的内存指针空间,所以name2的值并不会随着name1的改变而变化。
字符串特性:一旦修改,重新创建
以下是分配两块地址池的:
id1 = 7
id2 = 7
id(id1),id(id2) 指针地址一样,同一块内存指针池(看起来一样,是内部进行优化的,相当于在内部循环了一遍,当循环了一遍之后,发现有一个id1也是这个地址,于是也将id2指向这个地址,实际上是开辟两块指针空间的)
如果缓冲池过大,就会新开辟一块空间,缓冲池就会将多的扔掉
id1 = 700
id2 = 700
id(id1),id(id2) 指针地址不一样
6 流程控制:
user_name = raw_input("please enter Your name:") if user_name == "Allen": print "one!" elif user_name == "yyh": print "Two!" elif user_name == "ali": print "Three!" else: print "Invalid User!"
7.数据类型,分为两部分:
1)、单值
a.数字 : 整型、长整型、浮点、复数 -
b.布尔值: 真或假 、1 或 0 -
c.字符串: “hello wolrd”
2)、集合:
列表、元组、字典、哈希表
3)、字符串:
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的 空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
a).字符串传值:
字符串格式化:
name = "I‘m %s" % ‘allen‘ name = "I‘m %s, age: %d" % (‘allen‘,25) 其中%s,%d 是占位符,%s代表字符串,%d 代表数字 ,% 后面的值是实际传入的参数,用来替换%s,和%d的值 name = "I‘m {0},age:{1}" new_name = name.format(‘allen‘,25) print new_name
b) 打印字符串:
print ‘name‘ #使用单引号 print "name" #使用双引号 print """ #使用三引号,打印多行 I‘m is allen, age is 25 """
c) 字符串切片:
name = "allen" name[0] #打印索引为0的值,输出值:a name[0:2] #打印索引从0 到 2 的值,不包括2(即<),输出值为:al name[-1] #打印最后一个,输出值:n name[:-1] #打印索引从0开始至倒数第二个字符,不包括自己,输出值:alle
d) 统计长度
len(name) #统计字符串长度
e) 去除两边的字符
name.strip() #去除两边的空格 name.lstrip() #去除左边的空格 name.rstrip() #去除右边的空格
f) 分割
name = "allen,25,wonderful" name.split(‘,‘)
8.列表
a) 创建列表: name_list = [‘allen‘,‘yyh‘,‘ali‘,‘25‘] name_list = list([‘allen‘,‘yyh‘,‘ali‘,25]) b) 追加 name_list.append(‘hello‘) c) 删除 del name_list[0] d) john (列表变成字符串) "".join(name_list) e) in (包含,判断元素是否在列表中) "allen" in name_list
9.元组 (没有增删改),其他和列表一样
("allen","ali","yyh")
总结:
列表(list),字符串(str),元组(tuple)
共同点:
切片、索引、len() 、in
不同点:
str:重新开辟空间
list:修改后,不变
元组(tuple):
不允许修改
10.for 循环:
name_list = [‘allen‘,‘yyh‘,‘ali‘,‘25‘] for item in name_list: if item == "yyh": print "diu diu ..." continue if item == "ali": print "welcome to here!" break # 跳出循环
11.while 循环:
while 条件: print "ok ok ok" while True: # 死循环 print ‘true‘ flag = True #标记位 while flag: print "ok ok ok" flag = False
12.字典,键值对 (字典无序,特殊的for循环)
person = { "name":"allen", "age":"25", "gender":"man", } #person[‘name‘] for k,v in person.items(): #字典无序 print k,v person.keys() #所有key person.values() #所有value person.items() #所有元素
13.运算符
a) 算数运算:+ - * / % ** // b) 比较运算:== != < > >= <= c) 赋值运算:= += -= *= /= %= **/ //= d) 逻辑运算:and or not e) 成员运算:in not in f) 身份运算:is is not g) 位运算:& | ^ ~ >> <<
14.文件操作:
file_list = open(‘filename.txt‘,‘r‘) or file_list = file(‘filename.txt‘,‘r‘) for line in file_list.read(): print line # 全量读 for line in file_list.readlines(): print line # 读取所有行,(列表) for line in file_list.xreadlines(): print line # 一行一行读(每次只读一行)
需求:将用户每登陆一次,记录一次登陆次数(通过操作文件实现)
log.txt文件内容格式如下:
sun;123;3
bo;123;4
#!/usr/bin/env python #-*- coding:utf-8 -*- file_obj = file(‘test.txt‘,‘r+‘) line_list = file_obj.readlines() my_list = [] for ele in line_list: line = ele.strip() value_list = line.split(‘;‘) last_value = int(value_list[-1]) last_value += 1 value_list[-1] = str(last_value) value_str = ‘;‘.join(value_list) my_list.append(value_str) file_obj.seek(0) my_str = ‘\n‘.join(my_list) file_obj.write(my_str) file_obj.close()
原文:http://www.cnblogs.com/sundi/p/5035466.html