PYTHON_DAY_9_20160602

来源:互联网 发布:便携式安全座椅 知乎 编辑:程序博客网 时间:2024/06/15 06:28
今天开始学廖雪峰的python简介!




Q1: %格式化字符串对数字进行补位和小数点的写法?


python的两个缺点:
第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。


原来读取Python源代码的解释器也多种多样,官网提供的叫做CPython,因为它是用C语言编辑出来的。Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。


在shell下进行程序编辑称为“交互式命令行”


def input(prompt):
    return (eval(raw_input(prompt)))#input()的实现


这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):


int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量
和静态语言相比,动态语言更灵活,就是这个原因。


Python支持多种数据类型,在计算机内部,可以把任何数据都堪称一个‘对象’,而变量就是在程序中用来指向这些数据类型的,对变量赋值就是把数据和变量给关联起来。


最早的127个字母被编码到计算机中,被称为ASCⅡ码,中文的编码是GB2312编码。最后,为了统一,发明了Unicode。但是Unicode作为传输和存储消耗内存,十分不划算,于是出现了UTF-8编码。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。例如:浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。


字符串'xxx'虽然是ASCII编码,但也可以看成是UTF-8编码,而u'xxx'则只能是Unicode编码。
把u'xxx'转换为UTF-8编码的'xxx'用encode('utf-8')方法:
>>> u'ABC'.encode('utf-8')
'ABC'
>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'
英文字符转换后表示的UTF-8的值和Unicode值相等(但占用的存储空间不同),而中文字符转换后1个Unicode字符将变为3个UTF-8字符,你看到的\xe4就是其中一个字节,因为它的值是228,没有对应的字母可以显示,所以以十六进制显示字节的数值。


反过来,把UTF-8编码表示的字符串'xxx'转换为Unicode字符串u'xxx'用decode('utf-8')方法:
>>> 'abc'.decode('utf-8')
u'abc'
>>> '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
u'\u4e2d\u6587'
>>> print '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
中文


由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;


第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。


常见的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
%%   %符号


格式化整数和浮点数可以指定是否补0和整数与小数的位数:


>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'


如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:


>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'


由于历史遗留问题,Python 2.x版本虽然支持Unicode,但在语法上需要'xxx'和u'xxx'两种字符串表示方式。


Python当然也支持其他编码方式,比如把Unicode编码成GB2312:


>>> u'中文'.encode('gb2312')
'\xd6\xd0\xce\xc4'
但这种方式纯属自找麻烦,如果没有特殊业务要求,请牢记仅使用Unicode和UTF-8这两种编码方式。


list_1.append()方法将元素加到末尾
list_1.insert(2,'something')将元素加到指定的位置
list_1.pop()删除末尾的元素
list_1.pop(2)删除指定位置的元素


只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
>>> t = (1,)
>>> t
(1,)


从raw_input()读取的内容永远以字符串的形式返回!要使得输入的变量是数字类型,必须进行转换
birth = int(raw_input('birth: '))


循环是让计算机做重复任务的有效的方法,有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。


函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
0 0