要想运行Python程序 我们首先需要下载一个Python IDLE来编译运行我们的程序。Python既可以作为服务端语言,也可以像其他语言一样输出HTML。Python给我最大的印象是它是对空格敏感的,缩进的形式取代了其他言语中的 花括号来区分代码块。下面来看个简单的例子:
print ("My first Python code!")
print ("easier than I expected")
输出:
My first Python Code!
easier than I expected
挺简单 吧?Python是一个看起来很简单但是能够完成你能想象到的足够强大的功能 。大概就是简约而不简单吧,而且Python的语法也足够简洁。下面我来一点一点儿地揭开Python的神秘面纱吧
- 注释
Python的注释跟其他语言相比还是很不一样的,它使用起来相当简单。Python中分单行和多行注释。他们之间的区别想必有点儿语言基础的都应该深有体会...
单行 注释:
print("Not a comment")
#print("Am a comment")
输出:Not a comment
多行注释:
'''
print("We are in a comment")
print ("We are still in a comment")
'''
print("We are out of the comment")
输出:We are out of the comment
- 变量
变量是 包括Python在内的每个好的语言的核心。Python的变量十分敏捷,但也让人诟病。Python的变量在我们给它赋值的同时 也达到了声明的作用。
a = 0
b = 2
print(a + b)
输出:2
以上可以看出Python应该算是 比较智能的 能够根据我们赋的值来判断他们的类型 然后相加
a = "0"
b = "2"
print(a + b)
输出:02
可见,字符串也能够自动识别,那么当字符串和整数相加呢?这时就 需要使用Python自带的类型转换函数。
a = "0"
b = 2
print(int(a) + b)
输出:2
让我们来大致瞥一眼,几个常用的函数吧:
- int(variable)---将variable转换成整数integer
- str(variable)---将variable转换成 字符串
- float(variable)---将variable转换成浮点类型小数
- 操作符
每个编程语言都有自己的操作符,Python也不例外,操作符在编程语言中大概可以分成5个不同的领域:算术、赋值、自增/自减、比较、逻辑。
算术运算符
print (3 + 4)
print (3 - 4)
print (3 * 4)
print (3 / 4)
print (3 % 2)
print (3 ** 4) # 3 的4次方
print (3 // 4) #整除
输出:
7 -1 12 0.75 1 81 0
赋值运算符
a = 0
a+=2
print (a)
输出:2
- if语句
if语句作为编程语言逻辑的核心,在Python中也不例外。不过Python中的else if 缩短为elif
a = 20
if a >= 22:
print("if")
elif a >= 21:
print("elif")
else:
print("else")
输出:else
Python的语法固然简单 但是我们需要注意的就更多了。在每个条件后面我们需要带上一个冒号,然后我们需要另起一行,并且空出4个空格 告诉Python,当这个条件满足时执行这段4个空格开头的代码。当然空格个数不一定是4个,它只是一个标准,你也可以是3。如果这段代码是多行的,你需要保持每行之前的空格数目一致。
- 函数/方法
方法在Python中分离你的代码是非常有用的。任何你觉得你会在很多地方使用的代码,最好放在方法里。你可以在你的 方法上添加参数让它更具有灵活性。定义方法需要我们在方法名前添加关键字def
def someFunction():
print("boo")
someFunction()
输出:boo
以上可以看出,方法的定义其实很简单:def 加方法名()然后后面不要忘记加上一个冒号,方法体需要另起一行 缩进然后书写。
带参数的方法
def someFunction(a, b):
print(a+b)
someFunction(12,451)
输出:463
方法的作用域
def someFunction():
a = 10
someFunction()
print (a)
以下会报 a 为定义异常:
a = 10
def someFunction():
print (a)
someFunction(
- for循环
Python的for循环是相当棒的,相比其他语言功能强大而且非常简洁,我们将在稍后的集合讲解中慢慢体会它的简洁与强大。
for a in range(1,3):
print(a)
输出:1
2
这里我仍然需要注意 print(a)是需要缩进的,这个例子中a作为变量进行自增,并且使用range方法设置a的开始和结束 但是不包含结束
- while循环
其实在Python里,while循环和for循环非常相似
a=1
while a < 10:
print(a)
a+=1
输出:大家懂得
注意:Python目前还不支持do-while循环
- 字符串
像其他语言一样,了解字符串是认识Python,比较重要的事情。拥有其他语言背景的都知道,字符串包含若干个字符组成,要求不是那么严格,几乎可以包含任何东西。
myString=""
print(type(myString))
输出:<type 'str'>
type()方法用于获取变量的类型,它将是我们将来调试bug的好伙伴。
一些通用的字符串处理方法:
stringVar.count('x') - 计数stringVar中包含多少个‘x’字符
stringVar.find('x') - 返回字符'x'的位置
stringVar.lower() - 返回stringVar的小写形式
stringVar.upper() - 返回stringVar的大写形式
stringVar.replace('a','b') - 用字符'b'替换stringVar中的字符'a'
stringVar.strip() - 去除字符串stringVar头和尾的空格
字符串索引
想必看看例子基本都能明白是咋回事儿
a="string"
print(a[1:3])
print(a[:-1])
输出:tr
strin
- 列表
Python中没有arrays但是我们有列表lists,它允许我们存储多个变量,而且提供方法来操纵存储的元素。
sampleList = [1,2,3,4,5,6,7,8,9]
print(sampleList[1])
输出:2
像其他语言一样Python的起始下标也是0。当然这里存储的是一组数字,你也可以是一组字符串,要是你心情好也可是数字和字符串混合存储(尽管我们不提倡)。
使用for循环遍历lists
sampleList = [1,2,3,4,5,6,7,8,9]
for a in sampleList:
print(a)
输出:你懂的
通用的列表操作方法
.append(value) - 追加元素到list的结尾
.count('x') - 计数list中x的个数
.index('x') - 返回’x'在list中的索引
.insert('y','x') - 在'y'的位置插入'x'
.pop() - return 返回最后一个元素并从list中删除
.remove('x') - 从list中查找并删除'x'
.reverse() - 反转list中的元素
.sort() - 按照字符或数字递增排序list
- 元组
在Python中,元组等价与列表,既然是等价的为什么还搞出个元组呢?其实原因在于元组和列表之前有个区别,元组是不可改变的,也就是我们不能对元组中的元素进行CRUD操作。
myList = [1,2,3]
myList.append(4)
print(myList)
myTuple = (1,2,3)
print(myTuple)
myTuple2 = (1,2,3)
myTuple2.append(4)
print(myTuple2)
输出:
[1, 2, 3, 4]
(1, 2, 3)
Traceback (most recent call last):
File "hello.py", line 9, in <module>
myTuple2.append(4)
AttributeError: 'tuple' object has no attribute 'append'
可见对Tuple追加操作是报错了。
但是要改变元组的元素也不是不可能,我们可以将元组转换成列表后,在进行修改。
myTuple = (1,2,3)
myList = list(myTuple)
myList.append(4)
print(myList)
输出:[1, 2, 3, 4]
字典
Python中的字典跟其他语言,不太一样 它存储的是键值对
myExample = {'someItem': 2, 'otherItem': 20}
print(myExample['otherItem'])
输出:20
或许你可能想print(myExample[1])是不是也可以?结果会报错:
Traceback (most recent call last):
File "hello.py", line 2, in <module>
print(myExample[1])
KeyError: 1
而且字典不允许不能的value对应相同的key值,也就是Python会覆盖掉相同的key的value
下面我们来看一个字典的另一个例子:
myExample = {'someItem': 2, 'otherItem': 20}
myExample['newItem'] = 400
for a in myExample:
print (a)
输出:newItem
otherItem
someItem
myExample = {'someItem': 2, 'otherItem': 20,'newItem':400}
for a in myExample:
print (a, myExample[a])
输出:('newItem', 400)
('otherItem', 20)
('someItem', 2)
格式化
Python的格式化跟C语言的printf挺像但是又有不同
print('The order total comes to %f' % 123.44)
print('The order total comes to %.2f' % 123.444)
输出:
The order total comes to 123.440000
The order total comes to 123.44
对字符串进行格式化
a ="abcdefghijklmnopqrstuvwxyz"
print('%.20s' % a)
输出:abcdefghijklmnopqrst
- 异常
在任何一门语言中,包括Python在内,在处理大量的变量时,异常和错误处理都是必须的。其实也是通过try扑捉异常 不过Python比较简化
var1 = '1'
try:
var1 = var1 + 1 # since var1 is a string, it cannot be added to the number 1
except:
print(var1, " is not a number") #so we execute this
print(var1)
输出:('1', ' is not a number')
1
这里依然需要重点 注意这里的缩进
我们一般扑捉处理异常 按照如下,让程序遇到异常后仍然可以继续运行
var1 = '1'
try:
var2 = var1 + 1 # since var1 is a string, it cannot be added to the number 1
except:
var2 = int(var1) + 1
print(var2)
- 文件读取
大多数情况下,我们总需要读取一个日志或者xml文件,不要担心,Python为我们提供了比较简单的文件读取api
test.txt
I am a test file.
Maybe someday, he will promote me to a real file.
Man, I long to be a real file
and hang out with all my new real file friends.
打开test.txt文件:
f = open("test.txt","r")
然后我们就可以具体的操作这个文件了
f = open("test.txt","r")
a = f.readline()
b = f.read(1)
c = f.read()
print(a)
print(b)
print(c)
输出:
I am a test file.
M
aybe someday, he will promote me to a real file.
Man, I long to be a real file
and hang out with all my new real file friends.
运用for循环读取test.txt文件
f=open("test.txt","r")
myList = []
for line in f:
myList.append(line)
print(myList)
输出:
['I am a test file.\n', 'Maybe someday, he will promote me to a real file.\n', 'Man, I long to be a real file\n', 'and hang out with all my new real file friends.']
最后,我们需要注意:不要忘记关闭我们的文件链接 释放内存
f = open("test.txt","r")
print(f.read())
f.close()
- 文件写入
读取文件时很爽的,当然写入文件也是很有趣的。但是我们在写入文件时需要有一定的危机感,因为我们很有可能在一瞬间覆盖和丢失内容。写入文件的api跟读取一样简单。
f=open("test1.txt","w")
f.write("hello world,Sonicery_D!")
f.close()
如果我们要想对一个文件的内容,进行追加怎么办呢?
f=open("test1.txt","a")
f.write("I'm Pythoner!")
f.close()
这样就完成了内容的追加。
open方法 的第二个参数,"w"表示写 会覆盖以前的内容 "a" 表示append 是在之前的内容上进行追加 。
- 类
如果你没有OOP编程经验可能会觉得这部分内容比较复杂。类不仅可以帮助我们消除冗余的代码,而且能够帮助我们节省时间,例如,我们将方法定义在类中,当我们需要修改这个方法时,我们只需要修改在这个类中的方法定义即可,不需要像之前一样在每个此方法分散的地方都进行 修改。下面让我们来看看Python是如何进行类定义的吧。
#ClassOne.py
class Calculator(object):
#define class to simulate a simple calculator
def __init__ (self):
#start with zero
self.current = 0
def add(self, amount):
#add number to current
self.current += amount
def getCurrent(self):
return self.current
def __init__(self):定义了类的初始化方法 参数self用于辨别方法是属于哪个对象实例 故而add方法需要添加self参数
类对象的创建 与方法调用:
from ClassOne import * # 从ClassOne文件中 引入类
myBuddy = Calculator() #创建Calculator对象myBuddy
myBuddy.add(2) #调用myBuddy的add方法
print(myBuddy.getCurrent()) #打印myBuddy当前的变量值
Python的基本语法就基本介绍完了,如果想要深入学习Python,仍然需要我们针对具体内容具体学习。本篇内容可能过于简单,仅供参考