开始学习PYTHON,坚持下去!

 

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

 

#/usr/bin/env python  在linux中声明使用python解析

#_*_ coding:utf-8 _*_     coding:utf-8       文件以UTF-8编码,如不加,会以ASCII码保存,如有中文会有乱码

 

import  sys 导入sys模块   模块分为 系统   第三方 与自定义三种,如需调用外部模块使用import

import 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}   ---有什么用?