国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

初識python

gitmilk / 2590人閱讀

很早就聽說python的赫赫大名了,這學期學校也開了這門課,正好可以感受一下這門語言的魅力,對比C/C++/JAVA,它到底有什么獨特的地方呢?

"Life is short, you need Python"    --Bruce Eckel
人生苦短,我用python
一. 初印象:short

曾經有這樣一個段子,說聯合國同樣一份檔案,用五大官方語言寫的不同版本中,最薄的那份一定是漢語的。

這個段子放在python身上同樣也成立,幾大主流語言寫同樣一個功能,python的代碼量一定是最短的那個。

比如同樣是hello world
C/C++需要五行:

#include 
int main() {
    printf("Hello, World!");
    return 0;
}

java也需要五行,但代碼量明顯比上面的要多:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

再看看java的“小弟”javascript:



    第一個JavaScript程序




 

php:


 
  PHP 測試
 
 
 Hello World

"; ?>

js和php排除必要的html標簽,也需要一兩行,再看看python:

print("Hello World")

只需要一行,簡單到沒朋友,難怪連小學生都可以輕易上手

這只是python代碼簡短的冰山一角,它幾乎每一部分都是圍繞"short"來設計的

二、靈活

即使只看列表這一節,也能感受到python的語法是相當靈活的

1. 使用列表推導式生成列表
#生成含0到9的列表
list = [ x for x in range(10)]
#[0,1,2,3,4,5,6,7,8,9]
#生成指定列表中平方大于200的數的列表
list = [10, 20, 30, 40, 50, 60]
result = [x for x in list if x * x > 200]
#[20, 30, 40, 50, 60]

列表推導式可以看成是for循環的一種簡寫,使得生成列表的過程變得十分簡單。

2. 使用切片操作列表

舉個簡單的例子:

list = [x for x in range(10)]
#list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#從list中下標0開始,到下標8結束,間隔為2取列表中的元素
result = list[0:8:2]
#result = [0, 2, 4, 6]

事實上,切片的功能遠非如此,列表的增刪改查都可以通過切片實現

#逆置
result = list[::-1]
#刪除列表下標為0,1,2的元素
list[:3] = []
#將列表偶數位賦值為0
list[::2] = [0] * (len(list)//2)

切片更多的操作這里就不再贅述,總之這個操作十分靈活,但有時卻不能一眼看出操作實際目的,可讀性低

4. 解包壓包,讓代碼效率如此之高

序列解包,最簡單的理解就是將列表,集合等序列里的元素剝離出來,而壓包則是相反的過程
最簡單的解包:

x, y, z = [1, 2, 3]
#x = 1, y = 2, z = 3

利用這個功能就可以非常簡便地實現交換

x, y, z = z, x, y
# x = 3, y = 1, z = 2

也可以替代切片操作(表示多個元素,_表示忽略元素,_表示忽略多個元素)

x, *y, z = [1, 2, 3, 4, 5]
# x = 1
# y = [2, 3, 4]
# z = 5

x, *_, z = [1, 2, 3, 4, 5]
# x = 1
# z = 5

還可以讓函數返回多個值:

def testFun(name, number):
    return "name:" + name, "age:" + number
    
name, number = testFun("zhangsan", "24")
print(name, number)
# name:zhangsan age:24

最簡單的壓包:

key = ["name", "age", "number"]
value = ["zhangsan", 12, 1000]
person = dict(zip(key, value))
#person = {"name": "zhangsan", "age": 12, "number": 1000}

解包與壓包混用:

data = [
    ("Bob", "1990-1-1", 60),
    ("Mary", "1996-1-4", 50),
    ("Nancy", "1993-3-1", 55)
]
for name, *args in data:
    print(name, args)
    
# Bob ["1990-1-1", 60]
# Mary ["1996-1-4", 50]
# Nancy ["1993-3-1", 55]

在函數當中使用(可變參數)與*(關鍵字參數,將實參解釋為鍵值對):

def myfun(first, *middle, last, ** keyAndValue):
        print("first = ", first)
        print("middle = ", middle)
        print("last = ", last)
        print("keyAndValue = ", keyAndValue)
        
myfun(1,2,3, last = 4, name = "zhangsan", age = 1)

# first =  1
# middle =  (2, 3)
# last =  4
# keyAndValue =  {"name": "zhangsan", "age": 1}     

利用***混用表示任意參數,例如在裝飾器模式中:

def mydecorator(func):
     def wrapper(*args, **kw):
         print("一個裝飾器")
         return func(*args, **kw)
     return wrapper

@mydecorator
def myfun(name, age, number):
    print(name, age, number)
    
myfun("zhangsan", 24, 1000)

wrapper函數使用*args, **kw作為參數,則被修飾的myfun函數需要的參數無論是什么樣的,傳入wrapper都不會報錯,這保證了裝飾器可以修飾各種各樣函數的靈活性。

總結

python剛入門,確實被它簡潔的語法給深深吸引了,甚至一度懷疑自己是在敲指令,而非寫代碼,但它的靈活多變的特性也使得程序在我寫完沒過幾天,就完全看不懂了,即使是一個逗號,冒號也會隱藏大量細節,而這樣的細節通常很難debug出來。代碼太過簡潔,有利也有弊。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43440.html

相關文章

  • Python基礎系列:初識python引用計數與弱引用

    摘要:第一次初始化對象,并且用變量來引用,所以這里的引用計數就為。接下來通過創建一個弱引用,通過打印引用計數后,發現計數并沒有改變。由于一次僅能有一個對象被回收,引用計數無法回收循環引用的對象。所以弱引用很適合處理這種循環引用的場景。 寫在前邊: 之前的socket系列就告一段落,主要是對自己所學做一個總結與記錄。 接下來我打算基于libevent寫一個支持并發的HTTP服務器。因為之前學習...

    robin 評論0 收藏0
  • 趣味Python入門(一):初識Python

    摘要:盡管如此,還具有高級的數據類型和靈活性。它配備了大量的標準模塊,可用于程序庫。一些模塊提供如下功能通過這些很贊的特性,瞬時化身為面向過程的語言。開發者可以便捷地將解釋器連接到一個使用編寫的應用程序,并能隨時用作擴展。下一部分會繼續分享。 【編者按】本文作者是 Abhishek Jaiswal ,擅長 .NET、C#、Python 等多種語言的技術控。本文中,作者通過活潑有趣的口吻向大家...

    sutaking 評論0 收藏0
  • python綜合學習七之TensorFlow初識

    摘要:從這一節開始,將系統的學習這個開源包。為何要使用無可厚非地能被認定為神經網絡中最好用的庫之一。它擅長的任務就是訓練深度神經網絡。 從這一節開始,將系統的學習TensorFlow這個開源包。 一、TensorFlow概念 TensorFlow是Google開發的一款神經網絡的Python外部的結構包, 也是一個采用數據流圖來進行數值計算的開源軟件庫.TensorFlow 讓我們可以先繪制...

    qiangdada 評論0 收藏0
  • NeoVim初識

    摘要:檢查是否已經有了支持看到這個,就是成功了添加支持首先查看本機的在哪個位置,比如。安裝到目錄下然后在配置文件中加入引用注意后要用單引號。重啟后,在中安裝應用的命令 安裝 Mac上安裝(無需編譯直接解壓運行): cd /tmp wget https://github.com/neovim/neovim/releases/download/v0.3.1/nvim-macos.tar.gz &...

    褰辯話 評論0 收藏0
  • Python--Redis實戰:第一章:初識Redis:第三節:你好Redis-文章投票試煉

    摘要:為了防止用戶對同一篇文章進行多次投票,網站需要為每一篇文章記錄一個已投票用戶名單。上一篇文章實戰第一章初識第二節數據結構簡介下一篇文章實戰第二章使用構建應用第一節登錄和緩存 上一篇文章: Python--Redis實戰:第一章:初識Redis:第二節:Redis數據結構簡介下一篇文章:Python--Redis實戰:第二章:使用Redis構建Web應用:第一節:登錄和cookie緩存 ...

    Meils 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<