ホームページ > バックエンド開発 > Python チュートリアル > Pythonの基礎を詳しく紹介(ファイル入出力、組み込み型、辞書操作の使い方)

Pythonの基礎を詳しく紹介(ファイル入出力、組み込み型、辞書操作の使い方)

WBOY
リリース: 2016-06-16 08:45:54
オリジナル
1533 人が閲覧しました

1. 変数と式

コードをコピー コードは次のとおりです:

>>> 1 + 1 > hello world'
hello world
>
3



Python は厳密に型指定された言語であるため、コンテキストに基づいて自動的に解析して適切な型に変換することはできません。 Python は動的言語です。プログラムの実行中、同じ変数名が、操作のさまざまな段階で異なる形式の値 (整数、浮動小数点、リスト、タプル) を表すことができます。変数名は単なる参照です。データとオブジェクト。 C 言語の変数名は、結果を格納するために使用されるメモリ セグメントです。
1. Python では、変数は値ではなくオブジェクト参照を通じて割り当てられます。

2. 代入演算子は主に「=」ですが、x+=1 などの増分代入も使用できます。ただし、インクリメント演算子とデクリメント演算子はありません。

3. C 言語では、代入ステートメントを式として使用できます (値を返すことができます)。たとえば、次のような代入ステートメントは値を返しません。 🎜>コードをコピー

コードは次のとおりです:


>>> x=1

>>> 1) SyntaxError: 無効な構文#! で始まる行は、編成行と呼ばれます。この行は、プログラムの実行時にどのインタープリターを実行するかを Linux/Unix システムに指示します。例: #!/usr/bin/python

#で始まる行をコメント行と呼びます。

2. 条件文


制御フローステートメント: or、and、not キーワードを使用して任意の条件式を確立できます

if-elif-else: (Python には switch-case ステートメントがありません。辞書を使用して if ステートメントを使用すると、同じ作業を完了できます)

コードをコピー

コードは次のとおりです:

if something == 1:

doSomething1() elif something = = 2: doSomething2()else: pass # 空のブロックまたは空の本体を示します。 pass ステートメントを使用しますwhile-else:
while something:
doSomething1 ()
else:
doSomething2()
for-else:
for i in range(1, 10, 2): # i の値は 1 から 10 で、ステップ サイズは です。 2
print i
else:
print 'for ループは終了しました'



break and continue: ループを中断して続行するために使用されます。


3. ファイル入出力

コードをコピー

コードは次のとおりです:

f=open("foo.txt")

line= f.readline ()while line: print line, line=f.readline() #改行文字 'n' を含む行を読み取り、ファイルの最後まで読んでリターン空の文字列 f.close()
f=open("out.txt","w")
year=1
money=1000
while year<=5:
money=money*(1+0.05)
f.write("%3d %0.2fn" % (year,money)) # print>>f,"%3d %0.2f" % (year,money)
year+=1 f.close()


for line in f.xreadlines():
# line で何かを行う




4. 組み込み型


4.1 なしタイプ

None は空のオブジェクトを表します。関数が明示的に値を返さない場合は、None が返されます。 None のブール値は false

4.2 数値型 Python には、整数、長整数、浮動小数点数、複素数の 4 つの数値型があります。すべての数値型は不変です。

Python は、実際には +(+i) を意味するインクリメント演算子およびデクリメント演算子 ++、--、++i をサポートしていません

演算子と式: 基本的には他の言語と似ていますが、次の違いがあります:

x*y: 乗算。 2*3 は 6 になります。 'la' * 3 は 'lalala' になります。

x**y: 累乗演算。x の y 乗を返します。

x/y: x を y で割ると、4/3 は 1 になります (整数の除算は整数の結果になります)。 4.0/3 または 4/3.0 は 1.3333333333333333 を取得します。

x//y: 整数で割ります。商の整数部分を返します。 4 // 3.0 は 1.0 になります。

除算//: フロア除算はいつでも小数部を 0 に丸めます

-x x の符号ビットを変更します

4.3 文字列

文字列: 一重引用符 (‘) と二重引用符 (") は同じ効果があり、単一行の文字列のみを作成できます。エスケープ文字は () です。

3 つの引用符で囲まれたもの (''' や """ など) はすべて文字列の内容です。

自然文字列: 文字列の前に R (または r) を追加して、エスケープ文字などの特別な処理を必要としない一部の文字列を示します。たとえば、 print R "Hellon World" は "Hellon World" を直接出力します。改行。


コードをコピー

コードは次のとおりです:


a="hello world"
b=a[0,5]            # b="hello"
c=a+" I love you"   # c="hello world I love you"
s="The value of x is "+ str(x)

获得子串: s[i:j],返回 s 从i到j(不包括j)之间的子串。若i省略则i=0,若j省略则j=len(s)-1

str() repr() 函数或者向后的引号(`)可以将其他类型的数据转换为字符串。

Unicode字符串:在字符串前加U(或u)。如 a=u'hello',每个字符用16位来表示 "hello" 'world'会被自动连接为一个字符串"helloworld" ,"s1" u"s2"就会产生u"s1s2"

字符串、Unicode字符串及tuple是不可变的序列。

4.4 列表和元组(list & tuple)

列表和元组是任意对象的序列,支持的常用操作:

复制代码 代码如下:

len()
append()
insert(index,aMember)
list[index]=aNewMember

一个元素的元组:a=(12,)  #注意一定要个额外的逗号!
对于tuple中的元素,不可以修改,也不可以添加
列表是可变的序列,允许插入,删除,替换元素等操作

可变序列支持的操作:

复制代码 代码如下:

s[i]=v
s[i:j]=t    # t要是个序列
del s[i]
del s[i:j]

4.5 字典

字典就是一个关联数组(或称为哈希表),是一个通过关键字索引的对象集合。

使用{}来创建一个字典

复制代码 代码如下:

a={
    "username":"loo"
    "home":"/home/loo"
    "uid":500
  }
u=a["username"]            #访问
a["username"]="lu"         #修改
a["shell"]="/usr/bin/tcsh" #添加
del a["shell"]             #删除
len(a)                     #元素个数
a[("loo",123)]="abc"

字典的key是不能修改的对象(比如数字和tuple)。

五、循环

复制代码 代码如下:

for i in range(1,5):
    print "2 to the %d power is %d" % (i,2**i)

内建函数range([i,]j[,stride])建立一个列表,参数i和参数stride是可选的,默认分别为0和1。

复制代码 代码如下:

a=range(5,1,-1)   # a=[5,4,3,2]
s="hello world"
for c in s:       # 打印每个字符  
    print c

range()函数在内存中建立一个列表,当需要一个很大的列表时候,这个占内存且耗时间,为了克服这个缺点,python提供了xrange()。xrange()函数只在需要的时候才临时计算提供值,大大节省了内存。

六、函数

def say(message, times = 1):  # time 的默认参数值是 1
    print message * times   
    return time               # 无返回值的函数可省掉 return,等同于return None
只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。这是因为赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是有效的,

但是def func(a=5, b)是无效的。

global a  # 获得全局变量a

用户自定义函数:

复制代码 代码如下:

def foo(x,y):
    print '%s+%s is %s' % (str(x),str(y),str(x+y))
bar=foo
bar(3,4)
d={}
d['callback']=foo
d['callback'](3,4)     # 调用foo

用户自定义函数有如下属性:

f.__module__                        #函数所在的模块名
f.__doc__ 或者 f.func_doc       #文档字符串
f.__name__ 或者 f.func_name #函数名
f.__dict__ 或者 f.func_dict      #支持任意函数属性的函数名字空间
f.func_code                          #编译后产生的字节码
f.func_defaults                     #包含所有默认参数的元组
f.func_globals                      #函数所在的模块的全局名称空间的字典
f.func_closure                     #None or a tuple of cells that contain bindings for the function's free variables.

七、类

复制代码 代码如下:

class Stack(object):
    def __init__(self):
        self.stack=[]
    def push(self,object):
        self.stack.append(object)
    def pop(self):
        return self.stack.pop()
    def length(self):
        return len(self.stack)
s=Stack()
s.push("Dave")
s.push(42)
s.push([3,4,5])
print s.length()
print s.pop()
y=s.pop()
print y
del s

类方法的定义:

复制代码 代码如下:

# 静态方法:
class AClass(object):
    @staticmethod
    def astatic():
            print 'a static method'
# 类方法:
class ABase(object):
    @classmethod
    def aclassmethod(cls):

isinstance(s,C) 用于测试s是否是C或是C的子类的实例
issubclass(A,B) 用于测试A是否是B的子类

八、异常

用try和except语句来捕获异常:

复制代码 代码如下:

try:
    f=open("file.txt","r")
except IOError,e:
    print e
except TypeError,e:
    print e
...
try:
    do something
except:
    print 'An error occurred'

如果有IOError异常,就将错误原因放置在对象e中,然后运行except代码块,如果发生其他类型的异常就将控制权转到处理该异常的except的代码块,如果没找到该代码块,程序将终止运行,若没有发生异常,except代
码会被忽略掉。

九、模块

import 模块名
import 模块名 as 别名
from 模块 import 对象(函数)
from 模块 import *
内建函数dir()可以列出一个模块中的所有可访问的内容
可以被import导入的模块:
1.使用python写的程序(.py程序)
2.C或C++扩展(已编译的共享库或DLL)
3.包(包含多个模块)
4.内建模块(使用C写的并已链接到python解释器内)

十、引用与副本(引用计数)

python中的一切数据都是对象。
对于可变对象,改变一个引用就等于改变了该对象的所有的引用:

复制代码 代码如下:

a=[1,2,3,4]
b=a
b[2]=100
print a   # a=[1,2,100,4]

为了避免这种情况,你需要创建一个可变对象的副本,然后对该副本进行操作。

两种创建可变对象的副本:

(1)浅拷贝(shallow copy):创建一个新对象,但它包含的子元素仍然是原来对象子元素的引用:

复制代码 代码如下:

b=[1,2,[3,4]]
a=b[:]
a.append(100)
print b       # b=[1,2,[3,4]] b没有变
a[0]=100
print b       # b=[1,2,[3,4]] b没有变
a[2][0]=100
print b       # b=[1,2,[100,4]] b被改变了

(2)深拷贝(deep copy)

コードをコピー コードは次のとおりです:

import copy
b=[1,2,[3, 4]]
a=copy.deepcopy(b)

__del__() は、オブジェクトが破棄されるときに呼び出されます。 del x はオブジェクト x の参照カウントをデクリメントするだけであり、この関数は呼び出しません。

11. 型変換

コードをコピー コードは次のとおりです:

int(x[,base]) #int に変換
long(x [. 🎜>ord(x) #文字を整数値に変換します。
str(x)
a=[1,2,3,4]
s=repr(a) # s='[1,2 ,3,4]' s='a'
b=eval(s) # b=[1,2,3,4] を使用してリストに変換することもできます
eval('3+4' )
f=open("foo")
a=repr(f) # a="



12.その他

ドキュメント文字列 DocStrings: モジュール、クラス、または関数本体の最初のステートメントが名前のない文字列である場合、変更された文字列は自動的にオブジェクトのドキュメント文字列になります。端的に言えば、これは JavaDoc に似ています。
docstring の規則は、最初の行が大文字で始まりピリオドで終わる複数行の文字列です。 2行目は空行で、3行目からが詳細な説明になります。関数の docstring 属性 (関数の名前に属する) は、__doc__ (二重アンダースコアに注意してください) を使用して呼び出すことができます。 Python は、この関数を含め、すべてをオブジェクトとして扱います。 Python の

Help() は、関数の __doc__ 属性を取得して、それをきちんと表示するだけです。

自動ツールも同じ方法でプログラムからドキュメントを抽出できます。 Python ディストリビューションに同梱されている pydoc コマンドは、help() と同様に DocStrings を使用します。

コードをコピー

コードは次のとおりです:

def printMax(x, y): ''Prints 2 つの数値の最大値。id(a) はオブジェクトの ID を表示できます (現在の実装はメモリ内のオブジェクトの場所です)。



コードをコピー

コードは次のとおりです:

if type(a) is type(b): print 'a と b は同じ型です'

if type(a) is type.ListType

print 'Is a list'isinstance(s,C) は、 s は C であるか、C のサブクラスのインスタンスです


コードをコピー

コードは次のとおりです。

インポート タイプisinstance(3,types.IntType) #Return True

x==y x と y の値が等しいかどうかを比較しますx は y であり、x は y ではありません x と y がメモリ内の同じオブジェクトを指しているかどうかを比較します
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート