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

PYTHON第一课

2015-10-28 15:24 459 查看
开始学习PYTHON,坚持下去!

python是用C语言开发的编译性语言,运行时先被cpython jython ironpython等编译成字节码,然后再在对应的虚拟机里转换成机器码运行

#!/usr/bin/env python 在linux中声明使用python解析#_*_ coding:utf-8 _*_ 或 coding:utf-8 文件以UTF-8编码,如不加,会以ASCII码保存,如有中文会有乱码 import sys 导入sys模块 模块分为 系统 第三方 与自定义三种,如需调用外部模块使用importimport getpass 导入getpass模块,其中有个用法getpass.getpass() 用户输入但不显示在屏幕上,可用来输入密码 特殊的字符串变量 name1的值赋给name2后,当name1再赋值后,name2的值仍指向name1之前的字符串 --字符串一旦修改,就需要在内存中重新分配空间存放新的字符串,并将指针指向新的地址,尽量不要用加号处理字符串,会导致频繁的重新分配空间 (针对这点,PYTHON的缓冲池会有一定的优化) 循环控制 if xxx: xxx elif xxx: xxx elif xxx: xxx else: xxx 变量类型1.单值 数字 --整型 长整型 浮点型 复数 布尔值 True False 字符串 格式化 name = 'he is %s,now is %d' %('alex',30) name = 'he is {0},now is {1},{2}' 长度 len() 去除空格 name.strip() 还可以去除换最后的换行符 lstrip() rstrip() 索引 [] 切片[:] 分割 name.split() 默认以空格分隔生成列表,如果没有空格则直接生成只有一个元素的列表 与join功能一起可以实现某些字符替换功能,或者去除全部空格 包含 in 可用来判断是否存在(if),也可以用来循环 (for)2.集合 列表 list [] 索引[] 切片[:] 增append 删 del(不加[]会直接删除变量) 改 直接=赋值 合并 ' '.join() 包含 in 循环 元组 tuple() 与列表类似,但不可修改,其它的操作与列表相同 字典 dis {} 是key-value对,读取是无序的 person = {"name":"han","age":37,"gender":"male","job":"programmer" } print person["name"] --han print person.keys() --返回key列表 print person.values() --返回value列表 print person.items() -- 返回键值对的列表,每个元素是tuple for k,v in person.items(): print k,v 循环 for ele in str or list or tuple or dict: xxx break(跳出循环)/continue(跳出本次循环,继续下一次)/pass(什么都不干) while xxx: xxx 文件操作 打开 file_obj = file("文件路径","打开模式") r w a w+ 读 file_obj.read() 将全部内容读入内存 file_obj.readline() 将全部内容读入内存,交以行分隔生成列表,每项后面带换行符 for line in file_obj: 一行一行读入内存 写 file_obj.write() file_obj.writeline() 关闭 file_obj.close() 其它 type() 用来判断变量类型,要与 is 配合使用而不是== if type('han') is str id() 变量内存地址 问题1: 使用in来查找与使用for循环来查找的原理是否相同(str,list,dict),速度比较 补充: 字典的删除 del(person['name']) 或 person.pop('name') 与列表不同,列表的pop()可以有默认值,但字典不可以 字典值的获取 get() person.get('name') person.get('age',38) 如果age有值就获取,如果没有就取38 字典的更新 update() person.update(person1) 用person1去更新person,如果person里不存在就添加,如果存在就更新 相当于 merge 浅copy与深copy 只有字典有copy,列表与字典都有deepcopy dict2 = dict1.copy() 只是复制指向,两个dict指向相同,即id值 相同 dict2 = copy.deepcopy(dict1) --注意写法 深复制,指向不同,即id值 不同 ---问题: 字符也有deepcopy,但这个是不是重新分配空间? (id值相同 还是缓冲优化?) 设置默认值 dict = {} dict .setdefault("a") ---{'a':NONE} ---有什么用?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python