ホームページ >バックエンド開発 >Python チュートリアル >Python基礎チュートリアルの簡単入門(変数と制御言語の使い方)

Python基礎チュートリアルの簡単入門(変数と制御言語の使い方)

WBOY
WBOYオリジナル
2016-06-16 08:44:491150ブラウズ

はじめに
興味があればご覧ください: インタープリター言語 + 動的型付け言語 + 厳密に型付けされた言語

対話モード: (主にテストに使用され、ipython を試すことができます)

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

$python
>>> print 'hello world'

スクリプト

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

#!/usr/bin/env python
「hello world」を印刷


環境:

python2.7 + easy_install + pip + virtualenv + ipython をお勧めします

インデント
Python 関数には明確な開始と終了がなく、関数の開始と終了をマークする中括弧もありません。区切り文字はコロン (:) のみで、コード自体はインデントされます。

例:

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

#Function
def func(value) :
値 #Indent を印刷します

if 値 == 1:
値 += 1
elif 値 == 2:
pass
else:
値 += 10

識別子
変数は識別子の例です。 識別子は、何かを識別するために使用される名前です。識別子に名前を付けるときは、次のルールに従う必要があります:

1.Python の識別子は大文字と小文字が区別されます。

2. 識別子は文字またはアンダースコアで始まり、文字、アンダースコア、数字を含めることができます。大文字と小文字は区別されます。

3. アンダースコアで始まる識別子には特別な意味があります。

単一のアンダースコア (_foo) で始まるものは、直接アクセスできないクラス属性を表します。これらは、クラスによって提供されるインターフェースを介してアクセスする必要があり、「from xxx import *」を使用してインポートすることはできません。二重アンダースコア付き (__foo) クラスのプライベート メンバーを表します。二重アンダースコアで開始および終了する
(foo) は、クラスのコンストラクターを表す init() など、Python の特別なメソッド専用の識別子を表します。

4. 識別子は予約語にすることはできません


コードをコピーします コードは次のとおりです:
および elif global または yield
assert else if pass
break import print
class in raise
Continuefinally is return
def for lambda try
del from from not while

変数

代入ステートメント

1. 代入ステートメントはオブジェクト参照値を作成します

2. 変数名は初めて代入されるときに作成されます
3. 変数名には、参照される前に値が割り当てられる必要があります。値が割り当てられていないものは参照できません

割り当て方法

単純な代入

変数(変数)=値(値)

コードをコピー コードは次のとおりです:
s = 'スパム'

複数の変数の代入

Python の元のタプルとリストの代入ステートメントは、長さが等しい限り、右側が任意のタイプのシーケンスであることを受け入れるように一般化されています。長さが等しい必要があることに注意してください

Variable1, variable2,...=Value1,Value2,...

コードをコピー コードは次のとおりです:
s,h = 'a','b' タプル代入、位置 [よく使われる]
[s,h] =['a','b'] リスト代入、位置
a,b,c,d = 'スパム' シーケンス割り当て、普遍性
a,*b = 'スパム' 拡張シーケンス アンパッキング (python3)

複数ターゲットの割り当て

コードをコピー コードは次のとおりです:
a=b=variable
s = h = ‘spam’ マルチターゲット割り当て


注: 複数の変数がメモリ内の同じオブジェクトを指している場合、1 つの変数を変更すると他の変数に影響します
。 自動変数の割り当て


コードをコピー コードは次のとおりです:
+=、-=、*= など、など。

通常の書き込みでは 2 回の計算が必要ですが、独立変数の代入では Python は 1 回だけ計算します。
自動バリアント割り当ては、新しいオブジェクトを作成するのではなく、元のオブジェクトを変更します。


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

s +=42 增强赋值
x += y

优点:

复制代码 代码如下:

左侧只需计算一次,优化技术自动原处修改,更快
l +=[] 原处修改
l = l+[] 复制,生成新的对象

运算符
一个表达式可以分解为运算符和操作数

运算符 的功能是完成某件事,它们由如+这样的符号或者其他特定的关键字表示

运算符需要数据来进行运算,这样的数据被称为 操作数

运算符优先顺序列表(从最高到最低)

复制代码 代码如下:

运算符   描述
'expr'  字符串转换
{key:expr,...}  字典
[expr1,expr2...]    列表
(expr1,expr2,...)   元组
function(expr,...)  函数调用
x[index:index]  切片
x[index]    下标索引取值
x.attribute 属性引用
~x  按位取反
+x,-x 正,负
x**y    幂
x*y,x/y,x%y 乘,除,取模
x+y,x-y   加,减
x<>y 移位
x&y 按位与
x^y 按位异或
x|y 按位或
x=y,x>y   比较
x is y,x is not y 等同测试
x in y,x not in y 成员判断
not x   逻辑否
x and y 逻辑与
x or y  逻辑或
lambda arg,...:expr Lambda匿名函数

结合规律

运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算

计算顺序

默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。好的做法:默认对复杂的运算加括号,而不是依赖于默认结合和计算顺序

真值
真值测试

1、任何非零数字或非空对象都为真
2、数字零,空对象以及特殊对象None都为假
3、比较和相等测试都会递归地运用到数据结构中
4、比较和相等测试会返回True或False


真值表

复制代码 代码如下:

对象/常量   值
""  假
"string"    真   
0   假
2>=1    真
-2<=-1 真
()空元组 假
[]空列表 假
{}空字典 假
None 假

布尔表达式
三种布尔表达式运算符

复制代码 代码如下:


x and y
x or y
not x

比较
数字通过相对大小进行比较
字符串时按照字典顺序的,一个字符一个字符比较
列表和元组从左到右对每部分的内容进行比较
字典通过排序后的键值列表进行比较
数字混合类型比较在python3是错误的,但是python2.6支持,固定但任意的排序规则

布尔数
有两个永远不改变的值True,False
布尔是整型的子类,但不能被再继承
没有nonzero()方法的对象的默认值是True
对于值为0的任何数字或空集,值False
在数学运算中,Bollean值的True和False分别对应于1和0
基本控制流

if
基本的条件测试语句,用来判断可能遇到的不同情况,并针对不同的情况进行操作

基本形式

复制代码 代码如下:


if <条件>:
   <语句>
elif <条件>:
   <语句>
else:
   <语句>

注意

python根据缩进判断, elif和else部分是可选的

例子:

复制代码 代码如下:

a = 1
b = 2
c = 3;d=4 #两个放一句用分号隔开,不过建议分行

if a < b and c < d:
print("branch a")
elif a == b:
print("branch b")
else:
print("branch c")
switch

python 本身没有 switch 语句,若需要,用if/elif/else实现完成同样的工作,某些情况可以考虑用字典

也可以用dict的形式

if/else三元运算符

复制代码 代码如下:


A = ((X and Y) or Z)
A = Y if X else Z
例: a = ‘t' if x else ‘a'
[code]

for

基本文法

ループ制御ステートメントを使用して、特定のシーケンスをループできます

else ブロックはオプションであり、ループの終了時に実行されます。break によってループが終了すると、else は実行されません。

形式:
[コード]
for <オブジェクト コレクション>:
if<条件>:
if<条件> :
continue
<その他のステートメント>
else:
<その他のステートメント>

注:

1. オブジェクト コレクションはリスト、辞書、タプルなどです。

2. for..in ループは任意のシーケンスに適用できます。
3. for は辞書を走査するときに、そのキーを走査します。辞書

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

range() 関数を使用して整数のリストを生成し、カウント サイクルを完了できます


コードをコピーします コードは次のとおりです:
範囲 ([開始,] 停止[, ステップ])

start オプションのパラメータ、開始番号

stop 終了番号、x の場合、0-(x-1) の整数のリストを生成
step オプションのパラメータ、ステップ サイズ、書かれていない場合はデフォルトは 1
range(1,5) にはシーケンス [1,2,3,4]
が含まれます

xrange と range の違い

(python3.x は無視できます)

Rangeメソッドではリストオブジェクトを生成しますが、XRangeでは返されたものがそれほど大きくない場合やループ内では基本的に最初から最後までチェックする場合はxrangeオブジェクトを生成します。これら 2 つの方法の効率はほぼ同じです。ただし、返されるアイテムが大きい場合、またはループ内で頻繁に中断される場合は、スペースを節約するだけでなく効率も向上する XRange を使用することをお勧めします。


コードをコピー コードは次のとおりです:
>print range(1, 5)[1 , 2, 3, 4]
>>> print xrange(1, 5)
xrange(1, 5)


上記のステートメントでは、range は通常の List を返し、xrange は特定の xrange タイプのオブジェクトを返します。 xrange メソッドは、整数のリスト (同じ引数を取る) も作成するため、range メソッドと非常によく似ています。ただし、xrange メソッドは、必要な場合にのみリストに整数を作成します。 xrange メソッドは、大量のコンピューター メモリを消費する非常に大きなリストを作成しないため、多数の整数を反復処理する必要がある場合に適しています。

その間

if ステートメントと同様に、条件付きテスト ステートメントとループが含まれており、ステートメント ブロックを繰り返し実行できます。

オプションの else ステートメント ブロック。else ブロックと同じです。

形式:

コードをコピー コードは次のとおりです:while :
if :
Break
if :
continue
<その他のステートメント>
else:



説明:

else ブロックは、while ループの条件が False になった場合にのみ実行されます

break を使用してループを終了する場合、while オプションの else ブロックは実行されません

Python には do while または do until ループ ステートメントがありません
break & continue & pass
break、ループステートメントを終了し、for/while ループ内で終了した場合、その else は実行されません

続行し、現在のサイクルを終了し、ループの次のラウンドに入ります - 最新のループの先頭にジャンプします (ループの最初の行に来ます)

pass は何も行いません。これは単なる空のプレースホルダーステートメントであり、何らかの構文ステートメントが必要であるが、プログラムは何も行わない場合に使用されます。

ループ else ブロック: ループが正常に終了するとき、つまり

のみ実行されます。

for または while ループから中断すると、対応するループ else ブロックは実行されません。覚えておいてください、break ステートメントは for ループ内でも使用できます

その他

ループ作成のヒント:

反復プロセス中に反復シーケンスを変更するのは安全ではありません (これは、リンク リストなどの変更可能なシーケンスを使用する場合にのみ当てはまります)。反復しているシーケンスを変更する場合 (たとえば、選択範囲をコピーする)、そのコピーを反復できます。カッティングマークを使うと簡単に出来ます


>>>

コードをコピー コードは次のとおりです: for x in a[:]: # スライスを作成しますリスト全体のコピー... if len(x) > 6: a.insert(0, x)


辞書内でループする場合、キーワードと対応する値iteritems( ) メソッドも同時に解釈されます。

コードをコピーします。 コードは次のとおりです。 > >> knights = {'gallahad': 'the pure', 'robin': 'the勇敢'}
>>> for k, v in knights.iteritems():
. . k、v
を印刷...
純粋なガラハッド
勇敢なロビン


シーケンスをループするとき、enumerate() 関数を使用してインデックス位置と対応する値を同時に取得できます。
コードをコピー コードは次のとおりです。

> for i, v in enumerate([' tic', 'tac', 'toe']):
... print i, v
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。