Python

主要列出了Python和Java不同的一些地方。

安装

下面说个硬核的,直接 build from source,然后安装,参考这篇文章 -> https://passingcuriosity.com/2015/installing-python-from-source/

标识符

注:python并没有强制限定对private成员变量的应用,更多的是一种编码规范。

行和缩进

代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。而是用缩进来写模块。

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

变量赋值

变量赋值不需要类型声明,变量赋值以后该变量才会被创建。

标准数据类型

类型属于对象,变量是没有类型的。

# 变量a没有类型,它仅仅是一个对象的引用,[1,2,3]是List类型
a = [1,2,3]

strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

# 变量赋值 a=5 后再赋值 a=10,实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值
a = 5
a = 10
# 将 list b 的第三个元素值更改,本身 b 没有动,只是其内部的一部分值被修改了
b = [1,2,3,4]
b[2] = 5

在函数参数传递的时候,分为传不可变对象和可变对象。(跟Java类似)

# 传递一个Number,为不可变对象,不会改变变量的值
def ChangeInt( a ):
    a = 10

b = 2
ChangeInt(b)
print b # 结果是 2

# 传递一个List,为可变对象,会改变变量的值
def changeme( mylist ):
   mylist.append([1,2,3,4]);
   return

mylist = [10,20,30];
changeme( mylist );
print mylist

for循环

通用语法

for iterating_var in sequence:
   statements(s)

通过object遍历

for letter in 'Python':
   print letter

fruits = ['banana', 'apple',  'mango']
for fruit in fruits:
   print fruit

通过index遍历

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print fruits[index]

通过内置enumerate函数遍历

sequence = [12, 34, 34, 23, 45, 76, 89]
for index, item in enumerate(sequence):
	print index, item

=>
0 12
1 34
2 34
...

函数参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

def printme( str ):
   print str;
   return;

printme("hello world");

关键字参数

调用函数时指明某个关键字的值如:f(x=1, y=2)

def printinfo( name, age ):
   print "Name: ", name;
   print "Age ", age;
   return;
 
printinfo( age=50, name="miki" );

默认参数(缺省参数)

调用函数时省略了某些参数,则在执行时使用该参数的默认值

def printinfo( name, age = 35 ):
   print "Name: ", name;
   print "Age ", age;
   return;

printinfo( name="miki" );

不定长参数

在定义函数时加入不定长参数,在调用时可传入不定长的参数

def printinfo( arg1, *vartuple ):
   print arg1
   for var in vartuple:
      print var
   return;

printinfo( 70, 60, 50 );

匿名函数

可以使用 lambda 来创建匿名函数。

sum = lambda arg1, arg2: arg1 + arg2;
 
print "相加后的值为 : ", sum( 10, 20 )

命名空间和作用域

在函数内部定义的变量是局部变量, 在函数外部定义的变量是全局变量。 如果重名,局部变量会覆盖全局变量。

如果要给函数内的全局变量赋值,必须使用 global 语句。

Money = 2000
def AddMoney():
   global Money
   Money = Money + 1

AddMoney()
print Money

引号

Python 可以使用引号( ‘ )、双引号( “ )、三引号( ‘’’ 或 “”” ) 来表示字符串,引号的开始与结束必须的相同类型的。

注释

单行注释采用 # 开头。 多行注释使用三个单引号(‘’‘)或三个双引号(“””)。

多行语句

一般以新行作为为语句的结束符,但是也可以使用斜杠( \)将一行的语句分为多行显示。

total = item_one + \
        item_two + \
        item_three

Other Topics

Fork me on GitHub