首頁 後端開發 Python教學 Python程序设计入门(1)基本语法简介

Python程序设计入门(1)基本语法简介

Jun 16, 2016 am 08:43 AM
python 基本文法

Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习。

Python的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用,但细一想,其实也是很正常,很合理的。虽然Python在面向过程/面向对象方面也是很宽松,但实际上一般的程序都是一个主入口,然后不断调用其它类库或函数,所以用缩进的方式并无不妥,那样一方面要求用户写代码时要规范,另一方面反向省去了多余的{}。
与C语言风格相比,Python主要语法特点而下:

1、变量、字符串
    在python中,所有变量都是对象,数组其实是一个链表,并且可以进行相应的链表操作。
1.1 对于普通数据类型,定义/赋值方法都是一样的,这里不作介绍,python的字符串方面有些特别,这里介绍一下。
python对字符串用 [']["] 括起含义是一样的,同样对特殊字符使用 [\] 进行转义
不过它有一个很特别的语法就是:[''']三引号,它用于括起分多行的字符串,实际是这也可以作为它的多行注解,如:

复制代码 代码如下:
# -*- coding: gb18030 -*-
'''
单独使用三引号,字符串因为没有使用,就相当于注解了
下面是给一个变量赋值
'''
str = ''' 我是一个三引号,\'oh!\'我可以换行,
          换行了,照样OK '''
print str

这样的语法很有趣吧。
需要特别注意的是,如果源码里有中文的,一定要在源码的第一行定义:
# -*- coding: gb18030 -*-

当然,你也可以使用utf-8编码,这看你是在linux还是在windows下调试了。

1.2 此外关于变量方面,有几个内置类型是有必要了解的,它们是:None、True、False (注意:python的变量是严格区分大小写的)

None 是表示没定义的变量,至于True/False这个谁都知道了吧,呵呵。

注解:除了用 ''' 作多行注解之外,也可以用 # 作为单行注解,这是linux下的脚本语言的常规做法了。

续行:python 中对于太长的行,可以用 \ 表示未结束,这和linux的shell的通用做法是一致的。

1.3 数组定义:
arr = ['a', 'b', 'c']
等同于
arr = []
arr += ['a']
arr += ['b']
arr += ['c']
#遍历方法:
for i in range(0, len(arr)):
    print arr[i], "\n"
python的数组实际不是数组,而是一个list对象,如果要参考它的用法,可以参考这个对象的方法。
需要注意的是,python的数组实际是一个链表,因此定义后不能像php之类语言一样,直接在后面追加元素,而是需要用操作链表的方法操作。在上述例子中:如果用 arr[2] = 'ccccc' 可以改变第三个元素的值,但如果用 arr[3] = 'dddd' 增加一个元素是会指错的,应该用:arr.append('ddddd') 或 arr.insert(任意位置, 'dddd') 增加元素

对于多维数组,定义方式为: arr = [[]] * 3 它定义的是:[[], [], []],也可以用 arr = [[] for i in range(3)]

对于数组和字符串等常用操作,后面会有一章专门介绍,这里就不在列举更多的使用方法。

2、区块的定义(如语句、函数等)

Python的区块的格式都是

区块代码:
    区块内部的代码

它怎么判断区块结束呢?它不同VB、Dephi之类,区块都是有结束标志的,它没有,它是纯粹根据缩进来识别的,这样虽然有点怪异,不过习惯了会觉得也是挺好的。

区块基本定义语法:

2.1. if / elif / else

复制代码 代码如下:
x=int(raw_input("Please enter an integer:")) #获取行输入
if x>0:
    print '正数'
elif x==0:
    print '零'
else:
    print '负数'

Python中没用三问运算符,不过可以用 (满足条件的值 if 满足条件 else 未满足条件的值) 替代
如: str = ('ok' if 1>2 else 'not ok')
最终结果是: str == 'not ok'

这里需要说明的一个地方是,python中没有 !、&& 和 || 运算符,而是用 not、and、or

2.2. in
in判断 一个数 是否在 一个集合(如:元组,列表等) 中
if 'yes' in  ('y','ye','yes'):
    print  'ok'
与之相对应的还有 not in

2.3. for ... in
python中没有类似C 中的for循环,而是使用for...in来对集合中的每一个元素进行操作

复制代码 代码如下:
a=['cat','door','example']
for x in a:
    print x
等同于:
复制代码 代码如下:
for i in range( 0, len(a) ):
    print a[i]

如果要修改a的内容,请用a的副本循环 (否则不安全),如:

复制代码 代码如下:
a=["cat","tttyyyuuu"]
for x in a[:]:
    if len(x)>6: a.insert(0,x)
print a

结果为:
['tttyyyuuu', 'cat', 'tttyyyuuu']

2.4. break / continue

这两个的用法和其它C语法类的语言相同

复制代码 代码如下:
for i in range(10):
    if 2==i: continue #结束当前循环,进入下一步循环
    if 6==i: break #跳出循环
    print i
结果为:
0
1
3
4
5

2.5. while / pass
while True:
    pass #什么也不做

2.6. is
用来比较两个变量是否指向同一内存地址(也就是两个变量是否等价) 而 == 是用来比较两个变量是否逻辑相等

复制代码 代码如下:
a = [1,2]
b = [1,2]
>>> a is b
False
>>> a == b
True

2.7. del

用于删除元素

复制代码 代码如下:
a=[1,2,3,4,5,6]
del a[0]
a
>>>[2,3,4,5,6]

del a[2:4]
a
>>>[2,3,6]
del a[:]
a
>>>[]

del a
a
#抛出异常
>>>NameError: name 'a' is not defined

2.8. try ... except ... finally / raise

用于异常处理

复制代码 代码如下:
try:
    x=int(raw_input("请输入数字:"))
except ValueError: #可以同时捕获多个异常,写法如except(RuntimeError,ValueError):
    print "您输入不是数字" #当输入非数字时
except: #省略异常名,可以匹配所有异常,慎用
    pass
else: #当没有异常时
    print 'result=', x
finally: #和Java中类似。一般用于释放资源,如文件,网络连接。
   print 'finish'

raise用于抛出异常,可以为自定义的异常类

这里需要特别注意的是 try 语句内部不应该有完成某个操作的语法,而是需要写在
else: 后面,这和其它语言是很不同的,例如在 try 后面写个 print 它是不会显示任何东西的。

惯例是以Error结尾的类,同类的异常一般派生自同一个基类(如Exception)

复制代码 代码如下:
class MyError(Exception):
    def __init__(self,value):
        self.value=value
    def __str__(self):
        return reper(self.value)

基类异常可以匹配派生类异常

复制代码 代码如下:
try:
    raise Exception("spam","egg")
except Exception,inst: #inst为该异常类的实例,为可选项
    print type(inst) #异常的类型
    print inst

2.9 函数的定义

def 函数名(参数列表):
    函数代码
    return 返回值(可选)

复制代码 代码如下:
def get_arr(arr):
    arr.insert(0, 'aaa')
    return arr

arr = ['1','2','3']
new_arr = get_arr(arr)
print new_arr 

结果为:['aaa', '1','2','3']

默认参数:
其中在后面的参数,允许初始化一个默认值,如:def myfunc(a, b=0, c='aaa') :

参数关键字:
python的函数还有一个变态的使用方法,就是调用时可以不按参数顺序,而是直接用 key=value这样的键值对表示参数,如:
myfunc(c='ggggg', a=0)

可变参数:
用 *key 表示,也是必须在参数表未尾
如:

复制代码 代码如下:
def fprintf(file, format, *args):
    file.write(format % args)

关于类和包的定义,在第三章会专门介绍,这里先不作说明。

3、附注——Python的运算符

运算符 名称 说明 例子
+ 两个对象相加 3 + 5得到8。'a' + 'b'得到'ab'。
- 得到负数或是一个数减去另一个数 -5.2得到一个负数。50 - 24得到26。
* 两个数相乘或是返回一个被重复若干次 的字符串 2 * 3得到6。'la' * 3得到'lalala'。
**

返回x的y次幂

3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整数的除法得到整数结 果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整数部分 4 // 3.0得到1.0
% 取模 返回除法的余数 8%3得到2。-25.5%2.25 得到1.5
左移 把一个数的比特向左移一定数目(每个 数在内存中都表示为比特或二进制数字,即0和1) 2
>> 右移 把一个数的比特向右移一定数目 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
& 按位与 数的按位与 5 & 3得到1。
| 按位或 数的按位或 5 | 3得到7。
^ 按位异或 数的按位异或 5 ^ 3得到6
~ 按位翻转 x的按位翻转是-(x+1) ~5得到6。
小于 返回x是否小于y。所有比较运算符返 回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 5
> 大于 返回x是否大于y 5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
小于等于 返回x是否小于等于y x = 3; y = 6; x
>= 大于等于 返回x是否大于等于y x = 4; y = 3; x >= y返回True。
== 等于 比较对象是否相等 x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。
!= 不等于 比较两个对象是否不相等 x = 2; y = 3; x != y返回True。
not 布尔“非” 如果x为True,返回False。 如果x为False,它返回True。 x = True; not y返回False。
and 布尔“与” 如果x为False,x and y返回False,否则它返回y的计算值。 x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象 称为短路计算。
or 布尔“或” 如果x是True,它返回True, 否则它返回y的计算值。 x = True; y = False; x or y返回True。短路计算在这里也适用。

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles