本文目錄一覽:
- 1、python和C語言。哪個好?
- 2、python的list和c的數組有什麼區別
- 3、python與c語言的關係
- 4、Python元組與c語言的數組有什麼區別嗎
- 5、python如何定義數組
- 6、python難還是c語言難
python和C語言。哪個好?
兩種語言沒有好壞之分,學C語言難而python簡單,但是先學C語言能更好打基礎。畢竟,要做程序員,不能只會一門語言,大多數程序員都需要會至少三門語言的。
C語言是你上大學第一門接觸的編程語言,可見它的重要性。C語言是一種面向過程的語言,而Python是一種面向對象的解釋型計算機程序設計語言。而你需要先了解什麼是面向過程,然後去了解什麼是面向對象。
如果使用C入門編程,能更好地掌握編程基礎,理解代碼運行原理,但是學習c比較枯燥,很難迅速見到成效,可能會打擊學習的積極性。使用python見效快,但是因為大部分使用高級介面,所以對底層實現方面可能就比較模糊,但是也可等學完python之後再學習C去補上。
現在國外教初學者編程都換python了,C是偏低層的,細節多,不易學。學python,你現在想做的東西,用python都可以很快很方便的實現。
python的list和c的數組有什麼區別
始看Python現半月前看Python核編程Dive into
Python兩本書說半月看兩本都知道囫圇吞棗我暫沒需求拿做型發主要平程序test用用所
我策略整體瀏覽用候現查說核編程第版太古講2.2前東西我看翻譯電版翻譯晦澀看完
點雲霧看網家說DIP啄木鳥免費電文檔找看說呢講比核編程適合第看初者我所覺講
看核編程些概念些模糊看本書明白少要初者看本保證理解
面習程翻閱資料程總結些Cpython比較明顯同處向細節肯定沒總結完比態
函數lambda些我都懶往寫實際作兩種完全同語言面些差異冰山角已權拋磚引玉吧至少應該我相同研究
興趣考慮否習另門語言朋友點幫助文算DIP習筆記吧順帶說句要朋友解幫忙推薦實戰性強Python
教材語言東西練手光比劃能
習目
我研究向嵌入式顯C語言我主要語言我語言者我前覺於做研究應用說解門語言
精通門語言所看python主要python更利於快速發些程序現認識研究應用能離要
想計算機工程競爭立足必須懂C語言真要做高性能編程,
能機器體系架構拋腦讓Python虛擬機(或Java虛擬機等)幫搞定所底層越越CPU
core越越恐怖內存性能瓶頸於層發員說所謂高性能程序發員說些透明應用自掌控比較
效些場合彙編C替代光知道C夠掌握門面向象語言相更高層語言僅發展利自技
術認識產幫助
要問我說誰更重要我覺C更重要C習曲線更陡貌似簡單實際處都陷阱看比較簡單低效程序12月
能搞定談優化深層難度嘛需要功底按算旦C語言基礎打計算機理解其語言理解都裨益比
C基礎說1python能寫些短程序面優化算都非基本語句換換
說 Python實際層應用Python比C便層
覺既懂C進步掌握C++應該水渠C++C超集我喜歡C++繁瑣巨所才決定看看Python我喜歡Python優雅與快捷
語言類型
CPython種態類型語言強類型語言類理解呢概按照列說明類:
靜態類型語言
種編譯期間確定數據類型語言數靜態類型語言通要求使用任變數前聲明其數據類型保證點Java C 靜態類型語言
態類型語言
種運行期間才確定數據類型語言與靜態類型相反Python 態類型確定變數類型您第給賦值候
強類型語言
種總強制類型定義語言Java Python 強制類型定義您整數明確進行轉換 能字元串
弱類型語言
種類型忽略語言與強類型相反VBScript 弱類型 VBScript 您字元串 『12′ 整數 3 進行連接字元串』123′看整數 123 所些都需要任何顯示轉換
象機制
具體理解態確定變數類型要PythonObject象機制說起Objects(稱象)Python於數據
抽象Python所數據都由象或者象間關係表示函數象字元串象每東西都象概念每象都三種屬性:
實體類型值理解實體理解象重要步實體旦創建直改變顯式摧毀同通意義講決定象所支持操作
式類型(type包括numberstringtuple及其)改變改變能值要找具體點說明實體相於
象內存址本質存類型值都實體外呈現Python提供些介面讓使用者象交互比id()函數用獲象實體
整形表示(實際址)type()函數獲取其類型
object機制c所具備主要體現面幾點:
1 剛才說c靜態類型語言我定義int a, char
b等等必須源代碼面事先規定比我Python面任意處直接規定a =
lka類型string其賦值候才決定我須代碼明確寫C面我必須顯式規定char *a =
lk工事先規定a類型
2 由於C沒象概念數據表示比說兩int變數ab我想比較用a ==
b判斷兩字元串變數ab我用strcmp比較ab本質指向字元串指針直接用==比較
比較實際指針存儲值——址
Java呢我通使用 str1 == str2 確定兩字元串變數否指向同塊物理內存位置叫做象同性 Java 要比較兩字元串值要使用 str1.equals(str2)
Python前兩者都由於象引入我用is運算符比較兩象實體具體象type沒關係
比象tuplestring甚至class都用is比較本質象同性比較Java
==類似 Cpointer比較類似Python==比較值比較
3
由於象機制引入讓Python使用非靈比我用自省查看內存象形式存其模塊函數獲取信息並進行
操作用種定義沒名稱函數按函數聲明參數順序調用函數甚至引用事先並知道名稱函數 些操作C都想像
4 意思細節類型象行影響各面比說a = 1; b =
1語句Python面引發能ab同指向值1象能別指向兩值1象例語句c = []; d
= []cd肯定指向同新創建空list沒完c = d =
[]語句呢cd指向相同list象些區別都c沒
我說說python慢主要原function call
overhead比較所東西現都象contruct destroy 花費連1 + 1 都 function
call像』12′+』45′ 要 create a third string object, then calls the string
obj』s __add想知速度何能快起
列表數組
析PythonlistC數組總趣相信能些朋友初列表候都作數組初於list數組區別定性主要集兩點首先list包含同數據類型比
[“this”, 1, “is”, “an”, “array”]
List放C其實字元串數組相於二維
其呢list其本身象C單純數組同於List操作重載運算符帶些問題比面例:
加入我要產維列表用面語句
A = [[None] * 2] * 3
結A值
[[None, None], [None, None], [None, None]]
初看沒問題典型二維數組形式列表現我想修改第None值用語句
A[0][0] = 5
現我再看看A值:
[[5, None], [5, None], [5, None]]
發現問題沒用 * 複製創建象引用真創建 *3 創建包含三引用列表三引用都指向同度2列表其行改變顯示所行想要解決我創建
A = [None]*3
for i in range(3):
A[i] = [None] * 2
創建包含三同度2列表
所直強調越複雜東西越靈越容易錯
代碼優化
C簡單語言我考慮優化候通想簡單比系統級調用越少越(緩衝區機制)消除循環低效率必要系統引用等
等其實主要都基於系統硬體細節考慮Python完全面說些優化形式於Python仍實用由於
Python語形式千差萬別庫模塊種所於語言本身言值注意優化要點舉幾例吧
比我list L1想要構建新list L2L2包括L14元素按照直接想代碼應該
L2 = []
for i in range[3]:
L2.append(L1[i])
更加優化優美版本
L2 = L1[:3]
再比s1..s7字元串(10K+)join([s1,s2,s3,s4,s5,s6,s7])比
s1+s2+s3+s4+s5+s6+s7快,者計算表達式join()則程完所複製於字元串操作
字元串象使用replace()僅沒固定字元串模式才使用則表達式
所說優化評判標準說C短精悍Python博精深
includeimport
C語言include非簡單形式單意義明確需要用外部函數等資源用includePython相似
機制import乍看兩傢伙挺像都我要用外部資源(見函數或者模塊(Python))用指明其實
兩者處理機制本質區別於Cinclude用於告訴預處理器include指定文件內容都給我作本源文件現
import呢簡單面內容*直接*插入本面玩意更加靈事實幾乎所類似機制Python都比C靈說C
C簡練我其實更喜歡C
簡單說說靈性importpython三種形式import X, from X import *( or a,b,c……),
X = __import__(』x’)用第二種比較便像第種用X.module調用模塊from X
import *import些publicmodule(般都__命名模塊)指定a,b,cimport
候用哪種形式呢應該說數模塊文檔都明確告訴應該用哪種形式需要用象from X import
*能更合適些目前看數第三Python庫都推薦使用from modulename import *
種格式做使引入者namespace混亂甚至於些專門設計用於種模式模塊(包括Tkinter,
threadingmatplot)都採用種式僅僅需要某象類a用from X import a比用import
X.a更調用a函數直接用a.function()既用加X
連自希望import模塊都知道辦請注意Python優勢體現我用
__import__(module)調用module其module字元串運行再決定底要調用module舉
例:
def classFromModule (module, Name):
mod = __import__ (module)
return getattr (mod, Name)
定義函數classFromModule代碼任何候調用
o = classFromModule (ModuleOfTheClass, NameOfTheAttribute)()
需要傳入字元串形式希望import模塊ModuleOfTheClass其屬性名字NameOfTheAttribute(數據)能調用名字字元串用事先指定根據運行情況判斷
順帶說句Pythonimport順序默認規定Cinclude點類似我般都先include系統文件再
include自文件(且區別)Python呢般應該按照順序import模塊:
1. 標準庫模塊 — sys, os, getopt 等
2. 第三模塊
3. 本實現模塊
全局變數
談全局變數呢倒說Pythonc全局變數概念同概念相同使用機制些差異舉例:
– module.py –
globalvar = 1
def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.
def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable
func函數globalvar讀使用globalvar =
xxx種賦值語句Python重新創造新本象並新值賦給原象值變func2函數由於我事先申明
globalvarglobal更改直接全局變數效
python與c語言的關係
C語言難,Python簡單。Python上手簡單有交互性強的開放環境,還有眾多的第三方庫,學習起來要比C語言容易很多;而C語言底層強在內存操作,功能實現起來卻十分複雜並不適合新手作為上手語言。
Python和C語言各有各的優勢,Python語法非常特殊,Python是由空格嚴格控制的,這對於剛接觸編程的人來說並不好;如果你用C語言開始編程,可以更好地掌握編程基礎,理解代碼操作原理,但是學習起來很枯燥,會阻礙你的學習,所以建議從Python語言開始學習。
對比C語言,Python不僅簡單、語法清晰,而且前景好、崗位多、薪資待遇高、就業範圍廣,絕對是0基礎的首選。
Python和C語言有什麼區別呢?來自於四點:
語言不同。C語言是一種編譯的語言,而Python是腳本語言;
全局變數方面。Python中,我們需要引用別的模塊;C語言中,需要在頭部使用include去引入;
狀態不同。C語言是靜態語言,而Python是動態語言;
數組和list不同。C語言中的數組裡面都是數字,而list包含很多不同的元素。
Python元組與c語言的數組有什麼區別嗎
區別大了,首先tuple不能修改,然後python裡面都是對象,有很多自帶方法和屬性,用起來可比c的數組靈活多了。
python如何定義數組
Python數組還有一個變態的使用方法,就是調用時可以不按參數順序,對於我們掌握怎樣正確創建Python數組是很有幫助的,而且也可從中學到不少編程技巧,例如委託和模板方法。希望大家一起研究下。在ubuntu中,更加是必須的一種腳本引擎,所以有必要去學習一下,這裡的文章只針對有一定編程基礎,最好是比較熟悉php或javascript的用戶,如果沒任何基礎的新手建議找更詳細的教程去學習。Python數組的變數是不需要定義的,這方面和php一樣,它比javascript還是寬鬆,不過它是用縮進作為段落標識的,作為習慣了C語言風格語法的人,可能一開始會很不習慣使用。但細一想,其實也是很正常,很合理的。雖然Python在面向過程/面向對象方面也是很寬鬆,但實際上一般的程序都是一個主入口。然後不斷調用其它類庫或函數,所以用縮進的方式並無不妥,那樣一方面要求用戶寫代碼時要規範,另一方面反向省去了多餘的{}。與C語言風格相比,Python主要語法特點而下:變數、字元串在python中,所有變數都是對象,數組其實是一個鏈表,並且可以進行相應的鏈表操作。對於普通數據類型,定義/賦值方法都是一樣的,這裡不作介紹,python的字元串方面有些特別,這裡介紹一下。python對字元串用
[‘][“]
括起含義是一樣的,同樣對特殊字元使用
[\]
進行轉義不過它有一個很特別的語法就是:[”’]三引號,它用於括起分多行的字元串,實際是這也可以作為它的多行註解,如:#!/usr/bin/python
#python
source
class
python:
def
Hello(self):
‘Hello’
def
count(n):
in=0
while(in=n):
inin=in+1
in
//buile
by
G++
or
VC++
//C++
Source
#include
iostream
int
main()
{
class
python
{
public:
void
Hello(void)
{
cout”Hello”endl;
}
void
count(int
n)
{
int
in=0;
while(in=n)
{
inin=in+1;
coutinendl;
}
}
};
return
0;
}
python數組實際不是數組,而是一個list對象,如果要參考它的用法,可以參考這個對象的方法。需要注意的是,python數組實際是一個鏈表,因此定義後不能像php之類語言一樣,直接在後面追加元素,而是需要用操作鏈表的方法操作。在上述例子中:如果用
arr[2]
=
‘ccccc’
可以改變第三個元素的值,但如果用
arr[3]
=
‘dddd’
增加一個元素是會指錯的,應該用:arr.append(‘ddddd’)
或
arr.insert(任意位置,
‘dddd’)
增加元素。對於多維數組,定義方式為:
arr
=
[[]]
*
3
它定義的是:[[],
[],
[]],也可以用
arr
=
[[]
for
i
in
range(3)]
對於數組和字元串等常用操作,後面會有一章專門介紹,這裡就不在列舉更多的使用方法。python數組實際不是數組,而是一個list對象,如果要參考它的用法,可以參考這個對象的方法。需要注意的是,python數組實際是一個鏈表,因此定義後不能像php之類語言一樣,直接在後面追加元素,而是需要用操作鏈表的方法操作。在上述例子中:如果用
arr[2]
=
‘ccccc’
可以改變第三個元素的值,但如果用
arr[3]
=
‘dddd’
增加一個元素是會指錯的,應該用:arr.append(‘ddddd’)
或
arr.insert(任意位置,
‘dddd’)
增加元素。對於多維數組,定義方式為:
arr
=
[[]]
*
3
它定義的是:[[],
[],
[]],也可以用
arr
=
[[]
for
i
in
range(3)]
對於數組和字元串等常用操作,後面會有一章專門介紹,這裡就不在列舉更多的使用方法。
python難還是c語言難
c語言相對比較難。
Python上手簡單有交互性強的開發環境,還有眾多的第三方庫,學習起來會比C/C++容易的多。但是C語言作為大學第一種編程語言,眾多高校會這麼選擇,是因為C語言相對其他編程語言,會更好的打好基礎,便於以後學習其他知識。
Python和C語言各有各的優勢,Python的語法非常特殊,Python是由空格嚴格控制的,這對於剛接觸編程的人來說並不好。目前沒有使用與Python相同語法的語言出現。如果用C語言來開始編程可以更好地掌握編程的基礎,理解代碼的操作原理,但是學習C語言比較枯燥的,容易打擊學習積極性。
想了解更多有關Python和C語言的詳情,推薦諮詢達內教育。達內教育致力於面向IT互聯網行業,培養軟體開發工程師、測試工程師、UI設計師、網路營銷工程師、會計等職場人才,目前已在北上海廣深等70個大中城市成立了342家學習中心;更是與多家企業簽訂人才培養協議,全面助力學員更好就業。感興趣的話點擊此處,免費學習一下
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242769.html