Python の基本 (継続的に更新)

1つの機能

1.1 関数の定義

1) 文字列「Hello World!」を出力します。

def hello():
	print("Hello World!")

2) 2 つの数値を比較し、大きい方の数値を返します

def max(a,b):
	if a > b:
		return a
	else:
		return b

1.2 関数呼び出し

hello()

操作結果:

「こんにちは世界」

a = 10
b = 20
print(max(a,b))

操作結果:

20

1.3 パラメータの受け渡し

  • Python では、型はオブジェクトに属し、オブジェクトには異なる型があり、変数には型がありません。
  • Python では、文字列、タプル、数値は不変オブジェクトですが、リスト、辞書などは変更可能なオブジェクトです。

1.3.1 不変型

整数、文字列、タプルなどのC++ に似た値の受け渡し。オブジェクトの値のみが渡され、渡されたオブジェクト自体には影響しません。

def swap(a,b):
    z = a
    a = b
    b = z
    
a = 5
b = 10
swap(a, b)
print(a)
print(b)

操作結果:

5
10

1.3.2 可変型

リストや辞書など、C++ と同様の参照渡し。

def changelist(mylist):
    mylist.append([1,2,3,4])   
    return 

mylist=[10,20,30]
changelist(mylist)
print(mylist)

操作結果:

[10,20,30,[1,2,3,4]]

1.4 パラメータ

  • 必須パラメータ
  • キーワード引数
  • デフォルトパラメータ
  • 可変長パラメータ

1.4.1 必須パラメータ

必要なパラメータは正しい順序で関数に渡す必要があり、その数は呼び出し時と宣言時で同じである必要があります。

def print_str(str):
    print(str)
    return 

print_str("hello")

操作結果:

こんにちは

1.4.2 キーワード引数

キーワード引数を使用すると、関数の呼び出し時に、宣言時とは異なる順序で引数を配置できます。

次の例での関数パラメーターの使用は、指定された順序で使用する必要はありません。

def printInfo(name, age):
	print("名字:", name)
	print("年龄:", age)
	return

printInfo(age = 50, name = "John")

操作結果:

名前:ジョン
年齢:50歳

1.4.3 デフォルトパラメータ

関数を呼び出すときにパラメータが渡されない場合は、デフォルトのパラメータが使用されます。

次の例では、age パラメータが渡されない場合、デフォルト値が使用されます。

def printInfo(name, age=30):
    print("名字:", name)
    print("年龄:", age)
    return

printInfo(name = "John")

操作結果:

名前:ジョン
年齢:30歳

1.4.4 不定長パラメータ

1) アスタリスク * の付いたパラメータはタプルの形式でインポートされ、名前のない変数パラメータがすべて保存されます。

def printInfo(arg1, *vartuple):
    "打印任何传入的参数"
    print(arg1)
    print(vartuple)
    
printInfo(10, 20, 30)

操作結果:

10
(20、30)

2) アスタリスク ** が 2 つ付いているパラメータは辞書形式でインポートされます。

def printInfo(arg1, **vardict):
    "打印任何传入的参数"
    print(arg1)
    print(vardict)
    
printInfo(20, a=5, b=8)

操作結果:

20
{'a': 5、'b': 8}

1.5 return ステートメント

return[expression] ステートメントは関数を終了するために使用され、オプションで呼び出し元に式を返します。パラメータ値のない return ステートメントは None を返します。

2 オブジェクト指向

2.1 クラス定義

1. Student クラスを定義する

class Student:
    pass

2. クラスの構築メソッド: __init__()。クラスがインスタンス化されるときに自動的に呼び出されます。

3. __init__() はパラメータを持つことができ、パラメータはそれを通じてクラスのインスタンス化操作に渡されます。

class Student:
	# 定义基本属性
	name = ''
	age = 0
	score = 0
	
	# 定义私有属性,在类外部无法直接进行访问
	__weight = 0
	
	# 定义构造方法
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

# 实例化        
stu = Student("John", 90)

2.2 クラスメソッド

クラス メソッドには、最初のパラメーターであるパラメーター self が含まれている必要があり、self はクラスのインスタンスを表します。

class Person:
    name = ''
    age = 0
    __weight = 0
    
    def __init__(self, name, age, weight):
        self.name = name
        self.age = age
        self.__weight = weight
        
    def printInfo(self):
        print("姓名:", self.name)
        print("年龄:", self.age)

# 实例化
p = Person("John", 18, 80)
p.printInfo()

操作結果:

名前:
ジョン年齢:18

2.3 継承

Person クラスを継承します。

class Student(Person):
    score = 0
    def __init__(self, name, age, weight, score):
        #调用父类的构造函数
        Person.__init__(self, name, age, weight)
        self.score = score
        
    # 覆盖父类的方法
    def printInfo(self):
        print("姓名:", self.name)
        print("年龄:", self.age)
        print("分数:", self.score)
        
stu = Student('Ken', 20, 75, 90)
stu.printInfo()

操作結果:

名前:ケン
年齢:20歳
スコア:90点

2.4 メソッドの書き換え

親クラスのメソッドの機能が要件を満たせない場合は、サブクラスで親クラスのメソッドを書き換えることができ、上記サブクラス Student は親クラス Person のメソッド printInfo() を書き換えます。

3モジュール

Python ファイルを使用するには主に 2 つの方法があります。

1. スクリプトとして直接実行
スクリプトとして直接実行する場合、 if __name__ == "__main__": 文の前後のコードが実行されます。

2. 他の Python スクリプトで import が呼び出される
import が実行される場合、 if __name__ == "__main__": 文の前のコードは実行されますが、文以降のコードは実行されません。

4 日付と時刻

フォーマットされた日付と時刻を取得するには 2 つの方法があります。
1. timeモジュールを介して取得する

import time

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

操作結果:

2022-12-29 16:15:25

2. datetimeモジュールを介して

from datetime import datetime

print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

操作結果:

2022-12-29 16:14:56

5つのファイル

1. mode = 'w'、ファイルを書き込みモードで開きます。

# 以w写入模式,创建test.txt
file = open('./test.txt', mode = 'w')

# 写入内容
file.write('hello\n')
file.write('world\n')

# 关闭文件
file.close()

テキストの内容は次のとおりです。

こんにちは
、世界

2. mode = 'a'、ファイルを追加モードで開きます。

file = open('./test.txt', mode = 'a')
file.write('hello world\n')
file.close()

テキストの内容は次のとおりです。

ハロー
ワールド、
ハローワールド

3. mode = 'r'、ファイルを読み取り専用モードで開きます。

file = open('./test.txt', mode = 'r')

コンテンツの行を読みます。

str = file.readline()
print(str)
str = file.readline()
print(str)
str = file.readline()
print(str)
file.close()

操作結果:

ハロー
ワールド、
ハローワールド

6 マルチスレッド

Python3 スレッドで一般的に使用される 2 つのモジュールは次のとおりです。

  • _糸
  • ねじ切り(推奨)

6.1 _thread モジュールを使用してスレッドを作成する

_thread モジュールの start_new_thread() 関数を呼び出して、新しいスレッドを生成します。

import _thread
import time

# 为线程定义一个函数
def print_time(threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' ' + threadName + '\n')

        
# 创建两个线程
try:
    _thread.start_new_thread(print_time, ("Thread - 1", 2, ))
    _thread.start_new_thread(print_time, ("Thread - 2", 4, ))
except:
    print("Error:无法启动线程")

操作結果:

2022-12-29 17:45:43 スレッド - 1
2022-12-29 17:45:45 スレッド - 2
2022-12-29 17:45:45 スレッド - 1
2022-12-29 17:45:47 スレッド- 1
2022-12-29 17:45:49 スレッド - 2
2022-12-29 17:45:49 スレッド - 1
2022-12-29 17:45:51 スレッド - 1
2022-12-29 17:45: 53 スレッド - 2
2022-12-29 17:45:57 スレッド - 2
2022-12-29 17:46:01 スレッド - 2

6.2 スレッド化モジュールを使用してスレッドを作成する

import threading
import time

exitFlag = 0

class myThread(threading.Thread):
    def __init__(self, threadID, name, delay):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay
        
    def run(self):
        print("开始线程:" + self.name)
        print_time(self.name, self.delay, 5)
        print("退出线程:" + self.name)
        
def print_time(threadName, delay, counter):
    while counter:
        if exitFlag:
            threadName.exit()
        time.sleep(delay)
        print(threadName + time.strftime(" %Y-%m-%d %H:%M:%S", time.localtime()) + '\n')
        counter -= 1
        
thread1 = myThread(1, "Thread-1", 2)
thread2 = myThread(2, "Thread-2", 4)

thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("退出主线程")

操作結果:

開始スレッド: Thread-1
開始スレッド: Thread-2
Thread-1 2022-12-30 09:05:35
Thread-2 2022-12-30 09:05:37
Thread-1 2022-12-30 09:05: 37
スレッド-1 2022-12-30 09:05:39
スレッド-2
2022-12-30 09:05:41 スレッド-1 2022-12-30 09:05:41
スレッド-1 2022-12-30 09: 05:43にスレッドを終了します
: Thread-1
Thread-2 2022-12-30 09:05:45
Thread-2 2022-12-30 09:05:49
Thread-2 2022-12-30 09:05:53
終了しますthread : Thread-2 が
メインスレッドを終了します

おすすめ

転載: blog.csdn.net/Kigha/article/details/128478397