Python是非常優美的語言,那到底如何個美呢?

?

我把Python里面非常有名的簡潔,高效,方便的代碼整理出來,讓我們來一睹她的風采。其實每個主題展開講都是很大的篇幅,今天我們先overview一下

看完之后,相信初學者會更快的喜歡上python.

1.列表推導

要說Python里面最簡潔最神奇的代碼,列表推導應該算排行第一。

這是一種非常精煉的寫法,可以根據一份列表來制作另外一份。這種表達式稱為list comprehension(列表推導)

例子1,利用一個列表生成一個新的列表

例子2,甚至可以過濾一些列表中的元素,列如:

---------------------?

例子3:若要需要對序列里面的內容進行循環處理時,也可以加一個函數進行組合完成

看完列表推導的用法,是不是覺得眼前一亮好很方便啊.

2.with用法

一般我們處理文件都是先打開->然后處理->然后關閉.比較麻煩,還需要防止異常保護try/finally,很多時候我們都把精力集中在如何處理文件這樣會忘掉關閉文件.Python里面有一種非常簡潔的方法:

?

普通的打開,關閉文件處理:

?

?

?

用with語句,使用起來非常簡單,有點像英語,用with語句能夠保證當寫操作執行完畢之后,自動關閉文件

?

?

其實with的使用場景非常多,除了對于文件的處理關閉,在多線程的使用里面對鎖的處理也是經常使用的 。以后的文章會講python的多線程,多進程的使用,會展開講.

with的用法體現了Python的一個精髓:把一些繁瑣的事務交給語言本身,開發者只要focus放在處理問題的邏輯上就可以了.

3.匿名函數lambda

Python里面有一個"懶人專用的函數",叫做匿名函數(也就是沒有函數名)的函數.我們在傳入函數時,有些時候,不需要顯式地定義函數,直接傳入匿名函數更方便.

lambda(這個名字其實是借鑒了另外一個黑客非常喜歡的語言LISP),lambda一般的形式是關鍵字lambda 后面跟一個或者多個參數,后面緊跟一個冒號,之后是一個表達式:

lambda arg1,agr2,...agrN:express using arguments

以map()函數為例,若要計算一個列表里面的每個元素的平方,可以直接傳入匿名函數:

>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])

[1, 4, 9, 16, 25, 36, 49, 64, 81]

通過對比可以看出,匿名函數lambda x: x * x實際上就是:

def f(x):

????return x * x


用匿名函數的好處是顯而易見的:

一方面是可以免去取名字的麻煩(因為高質量的代碼對函數的取名是有一定的要求的)

而且不必擔心函數名沖突

此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數:?

4.生成器

生成器是python里面一個比較難理解的概念,也是Python中引入的兩個強大的特性之一(猜猜另外一個特性是啥,對了就是裝飾器)

今天我先來看一下它的一個簡單例子,一個關于斐波那契數列的實現:
?

用了生成器的函數:

?

?

看第二種方法代碼是不是簡潔很多,這就是yield關鍵字的魅力.

如果一個函數定義中包含yield關鍵字,那么這個函數就不再是一個普通函數,而是一個生成器函數,打印看一下.

print(fac2(10))

>>><generator?object fac2 at 0x026958F0>

生成器函數和普通函數的執行流程非常不一樣:

函數是順序執行,遇到return語句或者最后一行函數語句就返回。

而變成生成器的函數,只會相應迭代操作時才運行,一般都是配合for使用(也有配合sum(),list())

在每次調用next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

好了,以上幾個就是Python中非常神奇的代碼,不知道大家看完之后是不是對Python的喜愛又加深了一分,那就不枉我大半夜敲這么多字了(說實話敲的有點手疼),其實簡潔高效就是python的代名詞.好了最后說一下,若我寫的對大家有幫助,麻煩大家支持一下,也是對我的一點鼓勵和動力.

原文:https://blog.csdn.net/qq_41888542/article/details/79824293?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456808.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js生成驗證碼并且驗證

<html> <head> <title>驗證碼</title> <style type"text/css"> #code { font-family:Arial; font-style:italic; font-weight:bold; border:0; letter-spacing:2px; color:blue; } </style> <script type &qu…

大數據集群搭建之hadoop、tomcat、jdk等工具的安裝(三)

目錄一、準備的資源&#xff1a;二、安裝配置過程 目錄 本章就說下各種軟件的安裝和配置。 一、準備的資源&#xff1a; 1、tomcat(如用于在網頁上查看HDFS的存儲等) 地址&#xff1a;http://pan.baidu.com/s/1miC93ny 密碼&#xff1a;52dd 2、jdk 地址&#xff1a;ht…

pycharm 快捷鍵大全

1、編輯&#xff08;Editing&#xff09; Ctrl Space 基本的代碼完成&#xff08;類、方法、屬性&#xff09; Ctrl Alt Space 快速導入任意類 Ctrl Shift Enter 語句完成 Ctrl P 參數信息&#xff08;在方法中調用參數&#xff09; Ctrl Q 快速查看文檔 F1 Web幫…

轉載 Spark性能優化指南——基礎篇

前言 在大數據計算領域&#xff0c;Spark已經成為了越來越流行、越來越受歡迎的計算平臺之一。Spark的功能涵蓋了大數據領域的離線批處理、SQL類處理、流式/實時計算、機器學習、圖計算等各種不同類型的計算操作&#xff0c;應用范圍與前景非常廣泛。在美團?大眾點評&#xff…

JavaScript 判斷變量是否為數組Array的方法

1. 不能用typeof &#xff0c;因為typeof 只能判斷基本類型&#xff0c;不能判斷引用類型 var ary [1,23,4];console.log(typeof ary); //輸出結果是Object上面的辦法并不能實時的檢測出是否是數組&#xff0c;只能判斷其類型&#xff0c;所以說typeof判斷基本類型數據還是挺好…

require.js用法簡介

一、為什么要用require.js&#xff1f; 最早的時候&#xff0c;所有Javascript代碼都寫在一個文件里面&#xff0c;只要加載這一個文件就夠了。后來&#xff0c;代碼越來越多&#xff0c;一個文件不夠了&#xff0c;必須分成多個文件&#xff0c;依次加載。下面的網頁代碼&…

Pycharm新建文件時自動添加基礎信息

# -*- coding: utf-8 -*- # Time : ${DATE} ${TIME} # Author : Liu # File : ${NAME}.py 如下圖所示 再建一個py文件時就會自動添加信息&#xff1a; # -*- coding: utf-8 -*- # Time : 2019/05/05 11:46 # Author : Liu # File : DOUBAN.py

JTLParser-linux上jmeter的jtl文件二次分析

解析JMeter的JTL文件 2013年01月30日 ? 綜合 ? 共 1452字 ? 字號 小 中 大 ? 評論關閉http://code.google.com/p/xtoolkit/wiki/JTLParser Introduction 當把JMeter使用命令行運行后&#xff0c;JMeter會把結果保存到一個指定文件中&#xff08;使用 -l 參數指定&#xff0…

php過濾html標簽截取部分內容

<?php$str <span>fdsfsdf</span><a href"#">href</a>; echo htmlspecialchars($str).<Br>; echo strip_tags($str);?>用strip_tags能把Html標簽都去掉&#xff0c;然后調用truncate函數 $array[$row[content_id]][content_ti…

解決python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

從網上抓了一些字節流&#xff0c;想打印出來結果發生了一下錯誤&#xff1a; UnicodeEncodeError: gbk codec cant encode character \xbb in position 8530: illegal multibyte sequence 代碼 import urllib.request resurllib.request.urlopen(http://www.baidu.com) ht…

Linux中的crontab詳解

linux系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作&#xff0c;因此這個系統服務是默認啟動的。另外, 由于使用者自己也可以設置計劃任務&#xff0c;所以&#xff0c; Linux 系統也提供了使用者控制計劃任務的命令 :crontab 命令…

centos7如何安裝cloud-init

cloud-init rpm包下載地址&#xff1a;https://pkgs.org/download/cloud-init http://www.rpmfind.net/linux/RPM/index.html 轉載于:https://www.cnblogs.com/double12gzh/p/10166131.html

實現一個簡單的前端水印

需求分析 水印效果如下&#xff1a; 除了直觀需求&#xff0c;還有非直觀需求。 這是個背景圖。文字樣式以及文字本身可調整。對于需求1&#xff0c;需要前端生成圖片的能力。 該能力的原理&#xff1a;借用canvas.toDataURL()或者(new XMLSerializer()).serializeToString()生…

QQ客服聊天功能網頁跳轉只需要幾行代碼

<html><head><meta charset"utf-8"></head><body><a target"_blank" href"http://wpa.qq.com/msgrd?v3&uin客服QQ號&siteqq&menuyes"><img border"0" src"http://wpa.qq.co…

HDU 2234 IDA*

無題I Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1648 Accepted Submission(s): 640 Problem Description一天機器人小A在玩一個簡單的智力游戲&#xff0c;這個游戲是這樣的&#xff0c;在一個4*4的矩陣…

Linux環境下Mysql的安裝教程及安裝過程常見問題的解決方法

最近安裝mysql時看到一篇不錯的文章 1、下載 下載地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下載版本&#xff1a;我這里選擇的5.6.33&#xff0c;通用版&#xff0c;linux下64位 也可以直接復制64位的下載地址&#xff0c;通過命令下載&a…

最全的微信小程序源代碼

wx-gesture-lock 微信小程序的手勢密碼 WXCustomSwitch 微信小程序自定義 Switch 組件模板 WeixinAppBdNovel 微信小程序demo&#xff1a;百度小說搜索 shitoujiandaobu 小程序&#xff1a;石頭剪刀布&#xff08;附代碼說明&#xff09; audiodemo 微信小程序開發之視頻播…

java 雙重檢查加鎖弊端

http://blog.csdn.net/axman/article/details/1089196 Java是在語言級提供對線程的支持,所以Java的內存模型分為主存儲器和工作存儲器. [Main memory]主存儲器就是實例所在的存儲區域,所有實例本身都被放在主存儲器中,當然這 句話本身就說明了實例的字段也在主存儲器中,主存儲器…

爬蟲的復習手冊

爬蟲的概念 模擬瀏覽器發送請求&#xff0c;獲取響應 爬蟲的流程 url---》發送請求&#xff0c;獲取響應---》提取數據---》保存 發送請求&#xff0c;獲取響應---》提取url&#xff08;下一頁&#xff0c;詳情頁&#xff09;重新請求 爬蟲要根據當前url地址對應的響應為準 …

Hive安裝報錯:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient的解決辦法

最近練習Hive&#xff0c;安裝時爆出如下錯誤&#xff1a;Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient的錯誤 報錯的日志如下&#xff1a; Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeE…