python 学习笔记1

#集成工具 pycharm 的汉化包下载与使用    
   https://github.com/linzhenyuyuchen/Others/

        将resources_cn.jar放到pycharm 安装目录下的lib目录下即可
        
        汉化后可能导致的问题:文件file—>设置setting, 无法打开
        将resources_cn.jar移除之后可恢复
   汉化问题多,我还是用原版英文的算了,多用用就熟练了   `...`        
    
#命令行部分
  dir          浏览目录
  mkdir make dir        创建文件夹
  rmdir remove dir     删除目录
  ipconfig         查看ip地址
  ping         测试网络连接
  pip freeze > requirements.txt         将项目依赖的包输出到指定的文件
  pip install -r requirements.txt         读取文件并下载
 
#代码部分
  #输入,打印
          input('请输入:' )   输入流
     print(r'')        打印
  #原样输出 不转义
    print(r'')        #  r 原样输出
     ‘’‘        #  三引号‘’‘  1、原样输出  2、多行注释的开始和结尾
   #占位符
    print('xxxx%sxxx%sxxxx%d' %(val1,val2,val3))    
      #   %s  占位符 str  字符串。变量 val1,val2,val3 分别依次对应3个占位符
       # %d   占位符 digit 整型数字                      
    print('我的薪水是:%.1f' %(val))          
      # %.1f   占位符    指定小数点后面的位数1  %.2f  小数点后2位
    #‘’ {} ‘’.format(  )   代替 %s等繁琐的写法
     age = 2                                
    person = 'sisite' 
    message = 'i say :i am {}year`s old.such as my {}'.format(age,person) 
    print(message) 
        #位运算符
            & 与   二进制解释,相同位,均为1得1,否则得0
            | 或   二进制解释,相同位,只要有1就得1,无1得0
            ~取反  二进制解释,相同位 不同得1,相同得0
            ^ 异或   二进制解释  相同位 相同得0  不同得1
            左移 : m<<n    m*2的n次方
            右移 :m>>n   m//2的n次方  得数向下取整
    #三目运算符
            a=5 
            b=6
            result = (a-b) if a>b else (b-a)
        #range
            range(8);  0~7 
            range(0,8) ; 0~7
    #for循环
            for  i in range(8):
                print('x')
            else:
                #占位 pass
                pass 
            print('y')
   
        #元组  type(元组)= tuple   特点:元组内元素不能修改
            name = ('1',)    #元组内部只有一个元素时,后面要加上逗号  ,   否则会默认为str字符串

        #将列表倒序  list[::-1]

        #查找列表中 list[2:-3]   从第2个开始,截取到倒数第三个元素

        #求最大值max()   求最小值min()   求和sum()   求长度len()

        #元组中的函数  index()  count()
            tuple.index(4)   在tuple中找到元素4的下标位置
            tuple.count(4)   在tuple中所有元素为4的个数

        #  *a   *_     0到多个  放入列表[ ]中 拆包与装包
            tuple = (1,2,3,4)
            a,*b,c = tuple
            ===> print(a,b,c)        ==>   a = 1    b = [2,3]    c = 4 
            ===> print(*b)   ==>   2 3 

        # in ;    not in ; 
            print(1 in (1,2)) ==> true
 
        # sorted()  排序,返回一个列表
        #强制类型转换  tuple() list()

        #list 列表   tuple元组   dict字典  
            dict2 = dict()

        #字典里面的函数  
            items()   
            values() 
            keys()   
            get()    
                1、dict2.get('张三',28)  如果没有查找到张三,则设置默认值28
                2、dict2.get('张三')  取出字典中的keys 张三
            remove()        删除,如果不存在会报错
            pop()   删除,如果不存在不报错。如果删除成功,返回删除项的值。


        #定义函数 
            def  add(*a)   #可变参数
            print(a)   ==> a ==>  () 是个元组 

        # print(locals())   打印函数内所有的变量

        # nonlocal  与  global  
            nonlocal  只能在嵌套内层函数中修饰变量
            nonlocal a   变量a为自由变量,可以保存在闭包中。

        #装饰器   函数作为参数给另外一个函数

              def funA(funX) :
                print('1')
                def funB(*arg,**kwargs):    #*arg对应多个参数,**kargs对应字典参数
                  time.sleep(2)       #休眠2秒,需要import time
                  print("B")
                  funX(*arg,**kwargs)
                return funB 

      #参数为字符
              @funA   
              def funChar(a):
               print(a)
              funChar(a)
 
      #参数为字符串
              @funA   
              def funStr(str):
                print(str)
              funStr('1991')
  
      #参数为列表
              @funA   
              def funList(list):
                for i in list
                print( i )
              list  = ['xx','xx','xx'] 
              funList(list)
    
      #参数为关键字
              @funA   
              def funDict(list, clazz='1991' )  #如果不传,则默认参数1991
                print(clazz)
                for i in list
                  print( i )

              list  = ['xx','xx','xx'] 
              funDict(list , 1990) #如果传,则参数1990
              funDict(list)   #如果不传,则默认参数1991

        #多次装饰
            def funFirst(func):
              def xxxx(*args, **kwargs):
                func(*args)
             print(...do something1...)
              return xxxx


            def funSecond(func):
              def xxxx(*args, **kwargs):
                func(*args)
                print(...do something2...)
              return xxxx

            @funSecond
            @funFirst   #哪个装饰器离得近,哪一个就先发挥作用。
            def funxxx(args):
              print('...do something funxxx...'.format(args) )
 
     funxxx(args)

        #装饰器传参  3层装饰
            #第一步定义三层装饰器 
            def funFirst(xxxx):                 # 第一层传递装饰器的参数
              def funSecond(funUse):              #第二层传递装饰器装饰的函数
                print("use {}".format( xxxx )           
                def funThird(*args, **kwargs):          #第三层传递装饰器装饰的函数的参数
                  funUse(*args)
                return funThird
              return funSecond

            #第二步装饰器传参  并且定义使用装饰器的函数
            @funFirst(xxxx = 100)               
            def funUse(yyyy):
              print('use {}'.format(yyyy) )

            #第三步 调用函数,并传参
            funUse(300)

        #函数作用域:L  E G B     
            L    local      本地的,局部的变量
            E   encloseing  嵌套
            G   global  全局变量
            B   built-in    内置的变量
              
posted @ 2020-01-20 13:54  仙界架构师  阅读(277)  评论(0编辑  收藏  举报