zoukankan      html  css  js  c++  java
  • python学习笔记之基础一(第一天) 凯

    银角大王之基础一 :

            http://www.cnblogs.com/wupeiqi/articles/4906230.html

    1、 python字符介绍

       在C语言中没有字符串,只有字符

       在python中的字符串hello,在C语言中是以字符数组在内存存放['h','e','l','l','o'],如果对字符串修改,则是在内存中新开辟了一段空间进行存放。

       字符串特性:一旦修改,需要重新创建。

       例: "hello" + "ni" + "hao"      内存中:['h','e','l','l','o'] + ['n','i'] + ['h','a','o']

       万恶的“+”,“+”号越多,在内存中多次重复创建,浪费空间。

       C语言需要手动回收,而python,C#等高级语言自带虚拟机会进行GC垃圾回收没有被调用的内存访问空间。

    2、 python字符串的格式化(占位符)可以节省内存空间

         有如下二种方式,例:

     说明:第二种format方式的效果会更好,性能更好,其实变量a的值没有变,在格式化赋值时会在内存中新开辟空间存放。在python2.7和python3.4中测试结果相同

     >>> a = 'i am %s,age is %d'
    >>> a % ('wangkai',33)
    'i am wangkai,age is 33'
    >>> print(a)
    i am %s,age is %d
    
    
    >>> a = 'i am {0},age is {1}' 
    >>> a.format('wangkai',33) 
    'i am wangkai,age is 33'
    >>> print(a)
    i am {0},age is {1}
    变量格式化

    3、 在python中会生成一个缓存池来节省内存空间

          主要存放经常用到的字符串及数字,所以在一定范围内对变量赋同样的值,他们的id值是一样的,当超出这个池的时候,id值则会不同

           分别在python2.7和python3.4版本中进行测试,测试结果如下:(经测试在python2.7和python3.4中效果一样)

           针对字符串,无限制

    >>> a = 'asdfsafsafasfsafasdfasfasfasf'
    >>> b = 'asdfsafsafasfsafasdfasfasfasf'
    >>> id(a),id(b)
    (140704388394128, 140704388394128)
    >>> a = 'ni'
    >>> b = 'ni'
    >>> id(a),id(b)
    (140704388417416, 140704388417416)
    字符实例

           针对数字,范围:小于-5,大于256

    >>> a = -5
    >>> b = -5
    >>> id(a),id(b)
    (8745920, 8745920)
    
    >>> a = -6
    >>> b = -6
    >>> id(a),id(b)
    (140718131946128, 140718131946320)
    
    >>> aa=256
    >>> bb=256
    >>> id(aa),id(bb)
    (8754272, 8754272)
    
    >>> aa = 257     
    >>> bb = 257       
    >>> id(aa),id(bb)
    (19083048, 18637656)
    数字实例

            具体python源码对数字的定义如下:

    4、python内部执行过程:

    5、print说明:

         Python 2中的print语句被Python 3中的print()函数取代,这意味着在Python 3中必须用括号将需要输出的对象括起来。

         特别说明:经测试在python2.6、python2.7,print作为语句,但已支持括号方式,例:a = 1 print a print(a)均可;

                       在python3.4版本中,print作为函数,只支持括号方式。

              如何限制print的默认换行:

                   1、python2版本下,在print输出的最后加个逗号","

                   2、python3.4下, print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) 设置end为空即可

          建议:为了代码在python2和3上的兼容性,请直接使用print函数括号方式。

     

    6、用户交互:

         在python2.7版本中

            raw_input:交互输入内容转化为字符串;

            input:交互输入内容不进行转化;相当于python3里的eval

         在python3.4版本中只有input,想要获取数字,需要进行int转变。

         举例:

    #_*_ coding:utf-8 _*_
    
    info = 'This var will be printed out ...'
    name = raw_input('Please input your name:')
    age = int(raw_input('age:'))   
    #age = input('age:')
    job = raw_input('Job:')
    salary  = input('Salary:')
    print type(age)
    
    print '''
    Personal information of %s:
              Name: %s 
              Age : %d
              Job : %s
            Salary: %d
    --------------------------
    ''' % (name,name, age,job,salary)
    用户交互实例
    n=1
    while n <= 3:
    
        input_num = int(input('input the num : '))
        if input_num == luck_num:
            print('good')
            break
        elif input_num > luck_num:
            print('the real num is bigger')
        else:
                print('the real num is smaller')
        n = n + 1
    else:
        print('too many try')
    三次输入判断

    7、用户输入内容隐藏:

        输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

    >>> import getpass
    >>> pwd = getpass.getpass("please input the passwd:")
    please input the passwd:
    >>> print(pwd)
    asdfasdfa
    输入字符隐藏

    8、文件操作:   

       python2.7版本中可以用file和open打开文件,  python3.4版本中只有open

           f = open('file_name','r')

           g = file('file_name','r')  

       其中打开模式有'r','w,','a','b','+'

           w:替换重写   a:追加  

           b:二进制文件,主要用于跨平台,来解决window和linux的回车换行区别

           +:用于同时读写

       * 一般会对文件读到的第一行去掉末尾的换行符      f.readline().strip('\n')

       *  read 读整个文件为一个字符串

       *  readline() 是一行一行读

       *  readlines()是按行读,存成一个列表

       * xreadlines:针对大文件,一行一行读,默认是把全文件读入内存。

       * r+ :读写,默认从文件尾写入,可以由seek跳到指定位置,然后替换文件内容。


       初始文件aa.txt

    kevin:123:1
    wang:22:2
    kai:311:3


     对python2.7和python3.4测试结果一样。

    # _*_ coding: UTF-8 _*_ 
    
    import sys,os
    file = sys.argv[1]
    
    f = open(file,'r+')
    line_list = f.readlines()
    
    new_list = []
    for line in line_list:
        #去掉行尾的换行符
        line = line.strip('\n')
        #对行信息按分隔符进行分列
        value_list = line.split(':')
    
        #获取最后一字段并数字化
        last_value = int(value_list[-1])
        #对最后一字段进行数字计算
        last_value *= 13
    
        value_list[-1] = str(last_value)
        #将列表转变为字符串
        new_str = ':'.join(value_list)
        #将循环的改变后的行追加到新的列表
        new_list.append(new_str)
    '''
        ######第一种方法按行追加到文件#####
        #按修改后的行追加到文件中
        #f.writelines(new_str + '\n')
    '''
    '''
    #####第二种方法将所有行统一追加到文件#####
    #将所有修改后的新列表转化为字符串
    my_str = '\n'.join(new_list)
    #将指标移到行首
    f.seek(0)
    #将写回到文件
    f.write(my_str + '\n')
    '''
    f.close()
    文件操作

    9、类型转变:

    Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。

    函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的
    语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。
    Some examples:


    下面有些例子
    >>> s = 'Hello, world.'
    >>> str(s)
    'Hello, world.'
    >>> repr(s)
    "'Hello, world.'"
    >>> str(1.0/7.0)
    '0.142857142857'
    >>> repr(1.0/7.0)
    '0.14285714285714285'

    经测试python2.7中有差别,在python3.6中针对数字,str和repr已经没有区别


    做人一定要靠自己
  • 相关阅读:
    Java运算符>、>>、>>>三者的区别
    深入浅析react native es6语法
    javascript基础学习(十五)
    javascript基础学习(十四)
    javascript基础学习(十三)
    javascript基础学习(十二)
    javascript基础学习(十一)
    javascript基础学习(十)
    javascript基础学习(九)
    javascript基础学习(八)
  • 原文地址:https://www.cnblogs.com/wushank/p/5058340.html
Copyright © 2011-2022 走看看