導航:首頁 > 編程語言 > python有哪些奇葩語法

python有哪些奇葩語法

發布時間:2023-06-10 22:48:25

python的特點有哪些

Python語言的特點:

①Python語法優雅,程序編碼簡單易讀。

②Python易上手,通過簡單的操作就能讓你寫的程序運行。Python非常適合用來做原型開發或其他專門的編碼任務,同時又不用為了維護而煩惱。

③Python擁有大量的標准庫來支持一般的編碼任務,例如連接網路伺服器、用正則表達式搜索文字、讀取和修改文件等。

④Python的交互模式可以很方便地檢測代碼片段。同時Python其實也自帶了一個叫作IDLE的集成開發環境,初學者可以利用它方便地創建、運行、測試和調試Python程序。

⑤Python通過添加新的模塊可以很容易進行擴展,這些模塊可以是通過類似C或C++等編譯型語言執行應用的。注意,Python是解釋型腳本語言。

⑥Python也可以被嵌入應用中來提供一個可編程的介面。

⑦Python可以在任何環境運行,包括Mac OS
X,Windows,linux和Unix,通過非官方的構建,也可以在android和ios上運行。

⑧Python雙重免費。首先下載和使用或是在你的應用中內置Python是完全免費的。其次Python可以被自由修改然後再發布,因為語言是完全開源的。

⑵ 【Python基礎】python基本語法規則有哪些

1.關於編碼:
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:
# -*- coding: cp-1252 -*-
2.標識符:
第一個字元必須是字母表中字母或下劃線,其他的部分由字母、數字和下劃線組成。
標識符對大小寫敏感。
在 Python 3 中,可以用中文作為變數名,非 ASCII 標識符也是允許的了。
3.保留字:
保留字即關鍵字,我們不能把它們用作任何標識符名稱。
Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:
代碼:
import keyword
keyword.kwlist
結果:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4.關於注釋:
單行注釋以 # 開頭
多行注釋可以用多個 # 號,還有 ''' 和 """
5.縮進與多行語句:
Python最具特色的就是使用縮進來表示代碼塊,不需要使用大括弧 {} 。
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠(\)來實現多行語句,例如:
代碼:total = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\),例如:
代碼:total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
6.數字(Number)類型:
Python中數字有四種類型:整數、布爾型、浮點數和復數。
int (整數), 如 1, 只有一種整數類型 int,表示為長整型,沒有 python2 中的 Long。
bool (布爾), 如 True。
float (浮點數), 如 1.23、3E-2
complex (復數), 如 1 + 2j、 1.1 + 2.2j
7.字元串:
python中單引號和雙引號使用完全相同。
使用三引號('''或""")可以指定一個多行字元串。
轉義符 '\'
反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
按字面意義級聯字元串,如"this " "is " "string"會被自動轉換為this is string。
字元串可以用 + 運算符連接在一起,用 * 運算符重復。
Python 中的字元串有兩種索引方式,從左往右以 0 開始,從右往左以 -1 開始。
Python中的字元串不能改變。
Python 沒有單獨的字元類型,一個字元就是長度為 1 的字元串。
字元串的截取的語法格式如下:變數[頭下標:尾下標:步長]
代碼示例:
#!/usr/bin/python3
str='Runoob'
print(str) # 輸出字元串
print(str[0:-1]) # 輸出第一個到倒數第二個的所有字元
print(str[0]) # 輸出字元串第一個字元
print(str[2:5]) # 輸出從第三個開始到第五個的字元
print(str[2:]) # 輸出從第三個開始後的所有字元
print(str * 2) # 輸出字元串兩次
print(str + '你好') # 連接字元串
print('hello\nrunoob') # 使用反斜杠(\)+n轉義特殊字元
print(r'hello\nrunoob') # 在字元串前面添加一個 r,表示原始字元串,不會發生轉義
8.空行:
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行並不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的代碼,便於日後代碼的維護或重構。
記住:空行也是程序代碼的一部分。
9.等待用戶輸入input:
執行下面的程序在按回車鍵後就會等待用戶輸入:
input("\n\n按下 enter 鍵後退出。")
以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。
10.同一行顯示多條語句:
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
11.代碼組:
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。
像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。
我們將首行及後面的代碼組稱為一個子句(clause)。
12.Print輸出:
Print 輸出
print 默認輸出是換行的,如果要實現不換行需要在變數末尾加上 end="":
代碼:
x="a"
y="b"
# 換行輸出
print( x )
print( y )
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
13.import 與 from...import
在 python 用 import 或者 from...import 來導入相應的模塊。
將整個模塊(somemole)導入,格式為: import somemole
從某個模塊中導入某個函數,格式為: from somemole import somefunction
從某個模塊中導入多個函數,格式為: from somemole import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from somemole import *
代碼:
導入 sys 模塊
import sys
print ('命令行參數為:')
for i in sys.argv:
print (i)
print ('\n python 路徑為',sys.path)
導入 sys 模塊的 argv,path 成員
from sys import argv,path # 導入特定的成員
print('path:',path) # 因為已經導入path成員,所以此處引用時不需要加sys.path
14.命令行參數:
很多程序可以執行一些操作來查看一些基本信息,Python可以使用-h參數查看各參數幫助信息:
代碼:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
15.一個有用的函數:help( )
調用 python 的 help() 函數可以列印輸出一個函數的文檔字元串:
# 如下實例,查看 max 內置函數的參數列表和規范的文檔
>>> help(max)
……顯示幫助信息…… 按下 : q 兩個按鍵即退出說明文檔
如果僅僅想得到文檔字元串:
>>> print(max.__doc__) # 注意,doc的前後分別是兩個下劃線
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.

⑶ python基礎語法知識詢問

由於Python語言的簡潔、易讀以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經採用Python教導學生程序設計的首選編程語言。例如麻省理工學院的計算機科學及編程導論課程就使用Python語言講授。

想必大家還想了解到更多知識技能,接下來就跟千鋒武漢Python培訓的老師就來分享一下Python基礎語法的四大知識點,希望大家會喜歡。

一、標識符

a)概念:對變數,常量,函數,類等對象起的名字。嚴格區分大小寫。

b)標識符命名規則:

語法要求(硬性):

i.必須以字母或者下劃線開頭(支持中文,中文也是字元)

ii.必須以字母,數字,下劃線組成

iii.區分大小寫

iv.不能和關鍵字和內置函數名同名。

代碼規范(彈性):

v.變數名全部小寫,常量全部大寫(代碼規范,不是語法要求)

vi.類名用大寫駝峰(代碼規范)、

vii.模塊和包名用小寫

二、關鍵字

a)Import keyword keyword.kwlist 查看所有關鍵字

三、注釋

a)單行:#開頭

b)多行:每行使用#

c)文檔注釋:使用三個引號包括起來(」」」 XXX 「」」),這種注釋專門為函數或者類形成說明文檔。注釋必須跟在定義體下面,不能再任意位置。

四、代碼頭兩行

a)#!/usr/bin/env Python:指定運行代碼的解釋器,linux專用,windows不需要。在linux下添加改行,則可以使用./xxx.py執行。如果使用Python xxx.py則不需要改行。

b)# -*- coding:utf-8 -*- :代碼的編碼方式

⑷ python自學菜鳥 expected an indented block什麼意思

1、不像其他語言(C++, java 等等),python的是用縮進來識別語法邏輯塊的(i.e. if, while, for, def 等)。同一個if邏輯塊下面的語句必須要有相同的縮進,否則python解析器怎麼知道if塊控制哪些語句?
2、所謂縮進,就是每一行開頭的空白。這個空白可以由多個空格或者製表符組成。python下面你怎麼縮進都可以,比如3個空格,2個tab,這樣都是合法的。但是同一個邏輯塊下面必須用一樣的。一般來說,我們推薦2空格縮進。(而不是用tab縮進,原因是tab在不同編輯器下顯示的空白長度不一致會帶來很多問題)
3、關於Google。搜索出來第一個答案就是Why do I get "expected an indented block" when I try to run my Python script? ,應該耐心的看完答案哦。遇到不懂的,比如不懂什麼是「indent 縮進」,應該繼續Google。一層層搜索下去。初期確實會遇到很大困難吧。加油
4、最關鍵的是!!!!!!!!!!!!!!樓主mm你應該換個漂亮的正面頭像啊!你看這個mm,問題比你奇葩多了,下面的回答不但沒有人責問「怎麼不會Google呢?」「這么簡單的問題也能上知乎」?反而吸引來一堆人來回答還被頂上了知乎推薦:自學 Python,現在出現個情況,該怎麼辦?
所以我覺得女孩子學python的關鍵是長得好看,至少頭像好看啊!然後問問題的時候要像那個妹子一樣賣點萌。比如你這個問題描述應該這么寫:

人家學python才第3天嘛~~~~ 遇到這個問題好討厭哦~~~ 各位gg能不能用簡單的語言跟小女子介紹一下什麼是縮進好不好?么么噠~

⑸ python中的try的用法

try語句是python裡面的控制語句,與except,finally配合使用處理在程序運行中出現的異常情況。

try的工作原理是:當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。

假如在讀一個文件的時候,希望在無論異常發生與否的情況下都關閉文件,該怎麼做呢?這可以使用finally塊來完成。注意,在一個try塊下,可以同時使用except從句和finally塊。如果要同時使用它們的話,需要把一個嵌入另外一個。

(5)python有哪些奇葩語法擴展閱讀:

python的基礎語法

Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。

python的用法

Python可以以交互模式運行,比如主流操作系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python交互環境。直接下達操作指令即可實現交互操作。

一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字元在這一行的位置來決定的(而C語言是用一對花括弧{}來明確的定出模塊的邊界的,與字元的位置毫無關系)。

⑹ python i++ ,python有這種語法嗎類似C++和java的 i++。整數自增

python並不支持i++這種整數自增的語法。如果想要達到類似的效果,可以使用如下語句。

首先,如果您想要使整數i,每次增加1,則有語句 i += 1;同理,整數 i 每次增加2,則有語句 i += 2,以此類推。如果想要使整數i,每次減少1,則有語句 i -= 1,;同理,整數 i 每次減少2,則有語句 i -= 2,以此類推。

拓展資料:

python軟體有如下優點:

1. 簡單,Python的語法非常優雅,甚至沒有像其他語言的大括弧,分號等特殊符號,代表了一種極簡主義的設計思想。閱讀Python程序像是在讀英語。

2. 易學,Python入手非常快,學習曲線非常低,可以直接通過命令行交互環境來學習Python編程。

3. 開源,Python的所有內容都是免費開源的,這意味著你不需要花一分錢就可以免費使用Python,並且你可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。

4. 自動內存管理,如果你了解C語言、C++語言你就會知道內存管理給你帶來很大麻煩,程序非常容易出現內存方面的漏洞。但是在Python中內存管理是自動完成的,你可以專注於程序本身。

5. 可以移植,由於Python是開源的,它已經被移植到了大多數平台下面,例如:Windows、MacOS、Linux、Andorid、iOS等等。

6. 解釋性,大多數計算機編程語言都是編譯型的,在運行之前需要將源碼編譯為操作系統可以執行的二進制格式(0110格式的),這樣大型項目編譯過程非常消耗時間,而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。

7. 面向對象,Python既支持面向過程,又支持面向對象,這樣編程就更加靈活。

8. 可擴展,Python除了使用Python本身編寫外,還可以混合使用像C語言、Java語言等編寫。

9. 豐富的第三方庫,Python具有本身有豐富而且強大的庫,而且由於Python的開源特性,第三方庫也非常多,例如:在web開發、爬蟲、科學計算等等。

⑺ 那些奇葩python模塊怎麼交叉編譯呀

先運行以下幾步:

[plain] view plain
tar zxf sqlite-amalgamation-3.5.6.tar.gz
cd sqlite-3.5.6
./configure --host=arm-linux --prefix=/usr/local/arm/3.3.2 --enable-shared --disable-readline --disable-dynamic-extensions

以上是把sqlite解壓縮,然後做一些配置,這里,我希望sqlite到時候安裝到/usr/local/arm/3.3.2里,要生成動態鏈接庫,不要readline,不要sqlite的動態擴展。
然後編輯Makefile,把CFLAG和CXXFLAG中的-g去掉,我們不用debug sqlite。
接下來就可以編譯和安裝sqlite了:

[plain] view plain
make
make install

這一步就完成了sqlite的編譯和安裝了。

⑻ Python|range函數用法完全解讀

迭代器是 23 種設計模式中最常用的一種(之一),在 Python 中隨處可見它的身影,我們經常用到它,但是卻不一定意識到它的存在。在關於迭代器的系列文章中(鏈接見文末),我至少提到了 23 種生成迭代器的方法。有些方法是專門用於生成迭代器的,還有一些方法則是為了解決別的問題而「暗中」使用到迭代器。

在系統學習迭代器之前,我一直以為 range() 方法也是用於生成迭代器的,現在卻突然發現,它生成的只是可迭代對象,而並不是迭代器! (PS:Python2 中 range() 生成的是列表,本文基於Python3,生成的是可迭代對象)

於是,我有了這樣的疑問:為什麼 range() 不生成迭代器呢?在查找答案的過程中,我發現自己對 range 類型的認識存在一些誤區。因此,本文將和大家全面地認識一下 range ,期待與你共同學習進步。

1、range() 是什麼?
它的語法:range(start, stop [,step]) ;start 指的是計數起始值,默認是 0;stop 指的是計數結束值,但不包括 stop ;step 是步長,默認為 1,不可以為 0 。range() 方法生成一段左閉右開的整數范圍。

對於 range() 函數,有幾個注意點:(1)它表示的是左閉右開區間;(2)它接收的參數必須是整數,可以是負數,但不能是浮點數等其它類型;(3)它是不可變的序列類型,可以進行判斷元素、查找元素、切片等操作,但不能修改元素;(4)它是可迭代對象,卻不是迭代器。

2、 為什麼range()不生產迭代器?
可以獲得迭代器的內置方法很多,例如 zip() 、enumerate()、map()、filter() 和 reversed() 等等,但是像 range() 這樣僅僅得到的是可迭代對象的方法就絕無僅有了(若有反例,歡迎告知)。這就是我存在知識誤區的地方。

在 for-循環 遍歷時,可迭代對象與迭代器的性能是一樣的,即它們都是惰性求值的,在空間復雜度與時間復雜度上並無差異。我曾概括過兩者的差別是「一同兩不同」:相同的是都可惰性迭代,不同的是可迭代對象不支持自遍歷(即next()方法),而迭代器本身不支持切片(即 getitem () 方法)。

雖然有這些差別,但很難得出結論說它們哪個更優。現在微妙之處就在於,為什麼給 5 種內置方法都設計了迭代器,偏偏給 range() 方法設計的就是可迭代對象呢?把它們都統一起來,不是更好么?

事實上,Pyhton 為了規范性就干過不少這種事,例如,Python2 中有 range() 和 xrange() 兩種方法,而 Python3 就幹掉了其中一種,還用了「李代桃僵」法。為什麼不更規范點,令 range() 生成的是迭代器呢?

關於這個問題,我沒找到官方解釋,以下純屬個人觀點 。

zip() 等方法都需要接收確定的可迭代對象的參數,是對它們的一種再加工的過程,因此也希望馬上產出確定的結果來,所以 Python 開發者就設計了這個結果是迭代器。這樣還有一個好處,即當作為參數的可迭代對象發生變化的時候,作為結果的迭代器因為是消耗型的,不會被錯誤地使用。

而 range() 方法就不同了,它接收的參數不是可迭代對象,本身是一種初次加工的過程,所以設計它為可迭代對象,既可以直接使用,也可以用於其它再加工用途。例如,zip() 等方法就完全可以接收 range 類型的參數。

也就是說,range() 方法作為一種初級生產者,它生產的原料本身就有很大用途,早早把它變為迭代器的話,無疑是一種畫蛇添足的行為。

對於這種解讀,你是否覺得有道理呢?歡迎就這個話題與我探討。

3、range 類型是什麼?
以上是我對「為什麼range()不產生迭代器」的一種解答。順著這個思路,我研究了一下它產生的 range 對象,一研究就發現,這個 range 對象也並不簡單。

首先奇怪的一點就是,它竟然是不可變序列!我從未注意過這一點。雖然說,我從未想過修改 range() 的值,但這一不可修改的特性還是令我驚訝。

翻看文檔,官方是這樣明確劃分的——有三種基本的序列類型:列表、元組和范圍(range)對象。(There are three basic sequence types: lists, tuples, and range objects.)

這我倒一直沒注意,原來 range 類型居然跟列表和元組是一樣地位的基礎序列!我一直記掛著字元串是不可變的序列類型,不曾想,這里還有一位不可變的序列類型呢。

那 range 序列跟其它序列類型有什麼差異呢?

普通序列都支持的操作有 12 種。range 序列只支持其中的 10 種,不支持進行加法拼接與乘法重復。

那麼問題來了:同樣是不可變序列,為什麼字元串和元組就支持上述兩種操作,而偏偏 range 序列不支持呢?雖然不能直接修改不可變序列,但我們可以將它們拷貝到新的序列上進行操作啊,為何 range 對象連這都不支持呢?

且看官方文檔的解釋:

…e to the fact that range objects can only represent sequences that follow a strict pattern and repetition and concatenation will usually violate that pattern.

原因是 range 對象僅僅表示一個遵循著嚴格模式的序列,而重復與拼接通常會破壞這種模式…

問題的關鍵就在於 range 序列的 pattern,仔細想想,其實它表示的就是一個等差數列啊(喵,高中數學知識沒忘…),拼接兩個等差數列,或者重復拼接一個等差數列,想想確實不妥,這就是為啥 range 類型不支持這兩個操作的原因了。由此推論,其它修改動作也會破壞等差數列結構,所以統統不給修改就是了。

4、小結
回顧全文,我得到了兩個偏冷門的結論:range 是可迭代對象而不是迭代器;range 對象是不可變的等差序列。

若單純看結論的話,你也許沒有感觸,或許還會說這沒啥了不得啊。但如果我追問,為什麼 range 不是迭代器呢,為什麼 range 是不可變序列呢?對這倆問題,你是否還能答出個自圓其說的設計思想呢?(PS:我決定了,若有機會面試別人,我必要問這兩個問題的嘿~)

由於 range 對象這細微而有意思的特性,我覺得這篇文章寫得值了。本文是作為迭代器系列文章的一篇來寫的,所以對於迭代器的基礎知識介紹不多,另外,還有一種特殊的迭代器也值得單獨成文,那就是生成器了。

閱讀全文

與python有哪些奇葩語法相關的資料

熱點內容
id加密門禁卡可以復制到手機嗎 瀏覽:672
路由器如何控制某個app 瀏覽:43
C51編譯器在標准C的基礎上 瀏覽:260
銀行卡掉了可以辦車貸解壓嗎 瀏覽:317
沒解壓可以貸款嗎 瀏覽:517
最小pdf閱讀器 瀏覽:808
游戲被加密了怎樣用電腦打開 瀏覽:300
藍燈如何手動選擇伺服器 瀏覽:85
伺服器設置在中國意味什麼 瀏覽:571
單片機不能進行選擇控制 瀏覽:694
咕咚手錶如何綁定手機app 瀏覽:530
命令虛擬語氣 瀏覽:405
戴爾系統命令 瀏覽:583
怎樣壓縮視頻文件大小 瀏覽:686
51單片機信號發生器 瀏覽:56
米拍攝影哪個app好 瀏覽:88
天津致遠曙光伺服器雲伺服器 瀏覽:117
光子程序員怎麼獲得 瀏覽:535
中醫診斷學第九版pdf 瀏覽:498
python集成包 瀏覽:305