小朋友学Python(2)

本节学习python的第一个程序:输出“Hello World!”。咱们用两种方法实现

方法(一)

进入python环境,直接使用print方法

 
hello world.png

方法(二)

先编程hello.py文件,再用python hello.py命令执行
注意,这种方法才是写python程序的常用方法。

1 在E盘下,新建一个PythonProjects目录,用以存放所有的python程序

2 在E:PythonProjects中创建hello.py文件,内容为
print("Hello World!")

3 在cmd命令行窗口中,先切换路径到E:PythonProjects目录下,再执行python hello.py命令
(注意,这里使用了命令pushd。win系统不同的磁盘之间,比如C盘和D盘之间,切换路径使用pushd命令;在相同的碰盘中切换路径,使用cd命令。
而mac/unix/linux由于只有一个盘,都是用cd来切换路径)

 



布尔类型

一、C语言

C语言中没有布尔类型,判断时 ,0为假,非0为真。

二、C++

C++的bool是布尔类型,取值为true或false
程序:

#include <iostream>
using namespace std;

int main() 
{
    bool a = true;
    bool b = false;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "Size of bool is " << sizeof(bool) << " Byte" << endl;
    
    return 0;
}

运行结果:
a = 1
b = 0
Size of bool is 1 Byte

三、Java

Java中的bool是布尔类型,取值为true或false
程序:

class BooleanTest {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("2 > 1 is " + (2 > 1));
    }
}

运行结果:

a = true
b = false
2 > 1 is true

说明:
Java中的布尔数据类型只有两个可能的值:true和false。但是它的“大小”并不是精确定义的,1个字节、4个字节都是有可能的。
理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。
虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。大多数人都会很自然的这样去想,我同样也有这个疑问,经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位,具有高效存取的特点。所以这其实是运算效率和存储空间之间的博弈,两者都非常的重要。

四、Python

程序:

a = True
print(a)
b = False
print(b)
print(1 > 2)

运行结果:

 
bool.png

注意:
python中不能显示写出数据类型,否则会报错。
比如在C/C++/Java中,你可以写int a = 10;
但是在Python中,写int a = 10会导致编译错误,只能写成a = 10



缩进

学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行

例1

if True:
print "True"
else:
print "False"

运行结果:

 
1.png

这里编译器给出的提示是,期待缩进的代码块。

例2

在两行print之前分别添加四个空格键

if True:
    print "True"
else:
    print "False"

运行结果

True

例3

在if前加一个空格,看看运行结果如何。

 if True:
    print "True"
else:
    print "False"

运行结果

 
2.png

这里编译器给出的提示是不被期待的缩进。

说明:python对缩进要求还是很严格的。
有时候,你觉得两行代码的缩进是一样的,但编译器仍然报错。这可能是因为一个地方使用空格来缩进,而另一个地方使用了tab键来缩进。碰到这种情况要统一缩进风格。



引号、多行语句、注释

一、引号

Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串。其中三引号可以由多行组成。

例1

str1 = 'Hello'
str2 = "Hello World!"
str3 = """Hello C++!
Hello Java!
Hello Python!"""

print(str1)
print(str2)
print(str3)

运行结果

 
quotation.png

二、多行语句

Python可以使用斜杠( )将一行的语句分为多行显示

例2

a = 1
b = 2
c = 3
total = a + 
        b + 
        c
print(total)

运行结果

6

若语句中包含 [], {} 或 () 括号就不需要使用多行连接符。

例3

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday', 'Saturday', 'Sunday']
print(days)

运行结果

 ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

三、注释

C, C++, Java中,单行注释采用//,多行注释采用/* */
Python中,单行注释采用#,多行注释使用三个单引号(''')或三个双引号(""")

例4

# 这是单行注释

例5

'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''

例6

"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""


中文编码

编码一直是让新手头疼的问题,特别是 GBK、GB2312、UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向。但是编码又是那么重要,特别在网页这一块。如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了。

(一)ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他们把这称为”字节”。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去,他们就把这机器称为”计算机”。

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上 00×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。

他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字 了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

后来计算机发展越来越广泛,世界各国为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了 最后一个状态255。从128到255这一页的字符集被称”扩展字符集”。但是原有的编号方法,已经再也放不下更多的编码。

等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。于是国人就自主研发,把那些127号之后的奇异符号们直接取消掉。规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在127号以下的那些就叫”半角”字符了。

中国人民看到这样很不错,于是就把这种汉字方案叫做 “GB2312″。GB2312 是对 ASCII 的中文扩展。

但是中国的汉字太多了,后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是 扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。

因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码。当时的中国人想让电脑显示汉字,就必须装上一个”汉字系统”,专门用来处理汉字的显示、输入的问题,装错了字符系统,显示就会乱了套。这怎么办?就在这时,一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。

UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于 ascii 里的那些”半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低8位,所以其高 8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。

但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。UNICODE 是用两个字节来表示为一个字符,它总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。

UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8 就是每次8个位传输数据,而 UTF16 就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。

看完这些,相信你对于这几个编码关系等,了解的比较清楚了吧。我再来简单的总结一下:

● 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。

● 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。

● 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。

● 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。

● 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。

● UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。

于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,电脑性能也已经足够无视这点性能的消耗了。所以推荐所有的网页使用统一编码:UTF-8。

(二)关于记事本无法单独保存“联通”的问题

当你新建一个 文本文档 之后,在里面输入 “联通” 两个字,然后保存。当你再次打开的时候,原来输入的 “联通” 会变成两个乱码。

 
1.png

这个问题就是因为 GB2312 编码与 UTF8 编码产生了编码冲撞造成的。从网上引来一段从UNICODE到UTF8的转换规则:

UTF-8编码Unicode编码
0000 – 007F 0xxxxxxx
0080 – 07FF 110xxxxx 10xxxxxx
0800 – FFFF 1110xxxx 10xxxxxx 10xxxxxx

例如”汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。

而当你新建一个文本文件时,记事本的编码默认是ANSI, 如果你在ANSI的编码输入汉字,那么他实际就是GB系列的编码方式,在这种编码下,”联通”的内码是:

十六进制表示二进制表示
c1 1100 0001
aa 1010 1010
cd 1100 1101
a8 1010 1000

注意到了吗?第一二个字节、第三四个字节的起始部分的都是”110″和”10″,正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本 时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了”00001 101010″,再把各位对齐,补上前导的0,就得到了”0000 0000 0110 1010″,不好意思,这是UNICODE的006A,也就是小写的字母”j”,而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就 是只有”联通”两个字的文件没有办法在记事本里正常显示的原因。

由这个问题,可以发散出很多问题。比较常见的一个问题就是:我已经把文件保存成了 XX 编码,为什么每次打开,还是原来的 YY 编码?!原因就在于此,你虽然保存成了 XX 编码,但是系统识别的时候,却误识别为了 YY 编码,所以还是显示为 YY 编码。

(三)Python 2.x中的编码问题

编写代码:

print “你好,世界”

运行结果:

 
2.png

原因:Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决方法:
(1)Mac/Linux/Unix系统
在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8

#coding=utf-8
print "你好,世界"

(2)Windows系统
将代码改为

#coding=utf-8
content = "你好,世界"
content_unicode = content.decode("utf-8")
content_gbk = content_unicode.encode("gbk")
print content_gbk

运行结果:

 


输入与输出

一、print与input

print "a =",
a = input()
print "b ="
b = input()
print "c =",
c = a + b
print c

运行结果:

 
1.png

说明:print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号

二、raw_input

print "a =",
a = raw_input()
print "b ="
b = raw_input()
print "c =",
c = a + b
print c

运行结果:

 
2.png

说明:
raw_input()是把输入的数据,全当成字符串处理了。
对于字符串而言,“+”代表连接。所以“1”+ “2”=“12”



条件语句

代码

a = -1
if a > 0 :
    print "a is greater than 0"
elif 0 == a :
    print "a equals 0"
else :
    print "a is less than 0"

运行结果

a is less than 0


获取命令行参数

Python同样可以获取命令行参数

代码:

import sys

print sys.argv

运行结果:

 

C/C++/Java/Python的关键字

一、C语言关键字

C语言关键字有32个

autobreakcasecharconstcontinuedefaultdo
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while

auto:声明自动变量。自动变量,只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明。
break:跳出当前循环
case:开关语句分支
char:字符型
const:声明只读变量,初始化后不能被更改
continue:结束当前循环,开始下一轮循环
default:开关语句中的“其它”分支
do:循环语句的循环体
double:双精度浮点型
else:条件语句否定分支(与 if 连用)
enum:声明枚举类型
extern:声明变量或函数是在其它文件或本文件的其他位置定义
float:单精度浮点型变
for:一种循环语句
goto:无条件跳转语句
if:条件语句
int: 整型
long:长整型
register:声明寄存器变量
return :子程序返回语句(可以带参数,也可不带参数)
short:短整型
signed:有符号类型
sizeof:计算数据类型长度或变量长度(即所占字节数)
static:声明静态变量
struct:声明结构体类型
switch : 用于开关语句
typedef:用以给数据类型取别名
unsigned:无符号类型
union:声明共用体类型
void:声明函数无返回值或无参数,声明无类型指针
volatile:说明变量在程序执行中可被隐含地改变
while:循环语句的循环条件

二、C++关键字

关键字(keyword)又称保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象、函数、类型、命名空间等。不能声明与关键字同名的标识符。
ISO C++98/03关键字共63个。

asmdoifreturntypedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try

asm
用于语法:
asm-definition:
asm ( string-literal ) ;
意义由实现定义,典型实现中传输其中的字符串给汇编器。

auto
在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,若是对象同时具有自动存储类,即生存期在块结束时结束。这样的变量被称为局部变量。这个关键字不常用,因为即便省略,声明的默认就是auto的。

*_cast
即const_cast、dynamic_cast、reinterpret_cast、static_cast。
C++风格的类型转换。dynamic_cast是动态的,需要运行时支持;其它都是静态检查,相比C风格的类型转换更加细化,增强了类型安全性。

bool,true,false
bool即布尔类型,属于基本类型中的整数类型,取值为真和假。true和false分别表示真和假。注意,C语言中没有bool类型。

break,continue,goto
break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。结构化程序较少使用goto,更多使用循环代替。

case,default,switch
switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。

catch,throw,try
用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。

char,wchar_t
表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。

const,volatile
const和volatile是类型修饰符。用于声明变量。
const表示只读类型(指定类型安全性,保护对象不被意外修改),
volatile 关键字和 const 对应,volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

struct,class,union
用于类型声明。
class是一般的类类型。
struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。
union是联合体类型。

delete,new
new用来生成对象并分配内存,delete用来销毁对象并回收内存。

do,for,while
循环语句的组成部分。C++和C语言支持do-while循环、for循环和while循环。

double、float、long、int、short、signed、unsigned
数值类型。
signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;其它整数类型的signed省略或不省略,含义不变。
signed或unsigned可单独作为类型,相当于signed int和unsigned int。
double和float专用于浮点数,double表示双精度,float表示单精度。
其它关键字表示整数类型。从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。

if,else
条件语句的组成部分。

enum
构成枚举类型名的关键字。

explicit
这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载。

extern, export
为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)。

friend
声明友元,使其不受访问权限控制的限制。

inline
声明定义内联函数,提示编译时内联——将所调用的代码嵌入到主调函数中。注意是否内联取决于实现——编译器有权不实际内联,如果它认为这是必要的或更符合预期的目标代码质量。

mutable
用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。

namespace
表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。
可以声明一个命名空间或命名空间别名。

operator
和操作符连用,指定一个重载了的操作符函数。

private,protected,public
指定类成员或基类中的名称的访问权限控制。

register
提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。

return
子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。

static
和C语言类似,声明静态存储期对象。在C++还有另一个用途——用于类作用域声明,表示声明的成员是类共有的,不需要通过类的对象访问。

sizeof
返回类型名或表达式具有的类型对应的大小。

template
声明模板,实现泛型和参数化编程。

this
this是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针。

typedef
用以给数据类型取别名。

virtual
声明虚基类或虚函数。具有虚基类或虚函数的类是多态类(polymorphic class),需要运行时提供支持来判断成员函数调用分派到的具体类型。

typeid
返回指针或引用所指对象的实际类型。
typeid是操作符,不是函数。

typename
告诉编译器是一个类型,不是一个成员。
用在模板定义里,标明其后的模板参数是类型参数,是class的同义词,可被class代替。

using
有两种基本用法:using声明和using指示(using namespace ...)。
前者是声明,引入命名空间或基类作用域内已经被声明的名称。后者引入命名空间内所有的名称。

void
特殊的“空”类型,指定函数无返回值或无参数。

三、Java关键字

Java关键字是事先定义的,有特别意义的标识符,有时又叫保留字。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
Java关键字有50个。

关键字含义
abstract 表明类或者成员方法具有抽象属性
assert 用来进行程序调试
boolean 基本数据类型之一,布尔类型
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范[1]
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中

四、Python 2.7关键字

Python 2.7中的关键字有31个

anddelfromnotwhileaselif
global or with assert else if pass
yield break except import print class exec
in raise continue finally is return def
for lambda try

1.and:表示逻辑‘与’
2.del:用于list列表操作,删除一个或者连续几个元素。
3.from :导入相应的模块,用import或者from...import
4.not:表示逻辑‘非’
5.while:循环
6.as:as单独没有意思,要与with一起使用,with....as
例子:

with open(“/tmp/foo.txt”) as file: 
data = file.read()

7.elif : 和if配合使用的,if语句中的一个分支用elif表示。
8.global : 定义全局变量
9.or:表示逻辑“或”
10.with:和as一起用
11.assert:表示断言。用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError
12.else:条件判断,用于选择分支
13.if:条件判断,用于选择分支
14.pass:当你在编写一个程序时,执行语句部分思路还没有完成,这时你可以用pass语句来占位,也可以当做是一个标记,是要以后来完成的代码。比如下面这样:

def dosomething():
    pass

15.yield: 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。
16.break:作用是终止循环,程序走到break的地方就是循环结束的时候。注意,如果是多层循环的话,break只能终止最里边那层的循环。
17.except:和try一起使用,用来捕获异常。try...except或try...except...finally
18.import:用来导入模块,有时这样用from....import,作用与C/C++的include和Java的import类似
19.print:输出
20.class:定义类
21.exec:可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子

>>> exec 'print "Hello World"'

22.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b
23.raise:raise可以显示地抛出异常。一旦执行raise语句,后面的代码就不执行了
24.continue:跳过continue后面循环块中的语句,继续进行下一轮循环。
25.finally :与try和except一起使用:try...except..finally,finally中的语句一定会被执行
26.is:Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值。
is判断的是a对象是否就是b对象,是通过id来判断的。
例子:

if(a is b)
    print “a is b”

27.return:用于跳出函数,可以返回一个值也可以不返回值
28.def:用于定义方法
29.for:for....in 一起使用:遍历容器中的每个元素
30.lambda:即匿名函数,简化了函数定义的书写形式,使代码更为简洁,但是使用函数的定义方式更为直观,易理解。
下面两种写法是等价的。
例1:

g = lambda x: x+1

例2:

def g(x) :
return x+1

31.try:出现在异常处理中,使用格式为:try...except或try...except...finally。
try中放想要执行的语句,except捕获异常,finally做清理工作。


变量类型

Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

一、数字

数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number对象就会被创建:
var1 = 1
var2 = 10

您也可以使用del语句删除一些对象的引用。
您可以通过使用del语句删除单个或多个对象的引用。例如:
del var
del var_a, var_b

例1

 
1.png

Python支持四种不同的数字类型:
int有符号整型
long长整型
float浮点型
complex复数,可用a + bj来表示,也可用complex(a, b)来表示

例2

 
2.png

二、字符串

python中,字符串用单引号或双引号包含起来。

python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

加号(+)是字符串连接运算符,星号(*)是重复操作。

例3

# -*- coding: UTF-8 -*-

str = "Hello World!"

print str           # 输出完整字符串
print str[0]        # 输出字符串中的第一个字符
print str[2:5]      # 输出字符串中第2个至第5个之间(下标从0开始算,不含第5个)的字符串
print str[3:]       # 输出从第四个字符开始的字符串
print str * 2       # 输出字符串两次
print str + "TEST"  # 输出连接的字符串

运行结果:

Hello World!
H
llo
lo World!
Hello World!Hello World!
Hello World!TEST

三、列表

List(列表) 是Python 中使用最频繁的数据类型。相当于C/C++/Java中的数组。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。

例4

# -*- coding: UTF-8 -*-
 
list = [ 'Theodore', 786 , 2.23, 'hello', 70.2 ]
tinylist = [123, 'john']
 
print list               # 输出完整列表
print list[0]            # 输出列表的第一个元素
print list[1:3]          # 输出第二个至第三个元素 
print list[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2       # 输出列表两次
print list + tinylist    # 打印组合的列表

运行结果:

['Theodore', 786, 2.23, ‘hello’, 70.2]
Theodore
[786, 2.23]
[2.23, 'hello', 70.2]
[123, 'john', 123, 'john']
[' Theodore ', 786, 2.23, 'hello', 70.2, 123, 'john']

四、元组

元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

例5

# -*- coding: UTF-8 -*-
 
tuple = ( 'Tom', 786 , 2.23, 'hi', 70.2 )
tinytuple = (123, 'john')
 
print tuple               # 输出完整元组
print tuple[0]            # 输出元组的第一个元素
print tuple[1:3]          # 输出第二个至第三个的元素 
print tuple[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2       # 输出元组两次
print tuple + tinytuple   # 打印组合的元组

运行结果:

('Tom', 786, 2.23, 'hi', 70.2)
Tom
(786, 2.23)
(2.23, 'hi', 70.2)
(123, 'john', 123, 'john')
('Tom', 786, 2.23, 'hi', 70.2, 123, 'john')

以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的。

例6

# -*- coding: UTF-8 -*-
 
tuple = ( 'Hero', 786 , 2.23, 'john', 70.2 )
list = [ 'Hero', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000    # 元组中是非法应用
list[2] = 1000     # 列表中是合法应用

五、字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

例7

# -*- coding: UTF-8 -*-
 
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
 
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
 
print dict['one']          # 输出键为'one' 的值
print dict[2]              # 输出键为 2 的值
print tinydict             # 输出完整的字典
print tinydict.keys()      # 输出所有键
print tinydict.values()    # 输出所有值

运行结果:

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

原文地址:https://www.cnblogs.com/alan-blog-TsingHua/p/9607625.html