Python xử lý các lần nhập trùng lặp như thế nào?

Mô-đun có thể chứa các hàm, như đã được mô tả, nhưng cũng có các biến thuộc mọi loại (mảng, từ điển, đối tượng, v.v.)

Thí dụ

Lưu mã này vào tệp mymodule.py

người1 = {
"Tên". "John",
"tuổi". 36,
"quốc gia". "Na Uy"
}

Thí dụ

Nhập mô-đun có tên mymodule và truy cập từ điển person1

nhập mymodule

a = mô-đun của tôi. người1["tuổi"]
in(a)

Chạy ví dụ »


Học cách lọc dữ liệu bằng Python như một nhà phân tích dữ liệu

Python xử lý các lần nhập trùng lặp như thế nào?

Thử tham gia các buổi đào tạo thực hành với hướng dẫn từng bước từ chuyên gia. Hãy thử dự án có hướng dẫn được thực hiện với sự cộng tác của Coursera ngay bây giờ

Get started


Đặt tên cho một mô-đun

Bạn có thể đặt tên cho tệp mô-đun tùy thích, nhưng nó phải có phần mở rộng tệp là .py

Đổi tên một Module

Bạn có thể tạo bí danh khi nhập mô-đun bằng cách sử dụng từ khóa as

Thí dụ

Tạo bí danh cho mymodule được gọi là mx

nhập mymodule dưới dạng mx

một = mx. người1["tuổi"]
in(a)

Chạy ví dụ »


Mô-đun tích hợp

Có một số mô-đun tích hợp sẵn trong Python mà bạn có thể nhập bất cứ khi nào bạn muốn

Thí dụ

Nhập và sử dụng mô-đun platform

nền tảng nhập khẩu

x = nền tảng. hệ thống()
in(x)

Tự mình thử »


Sử dụng hàm dir()

Có một hàm tích hợp để liệt kê tất cả các tên hàm (hoặc tên biến) trong một mô-đun. Hàm dir()

Thí dụ

Liệt kê tất cả các tên được xác định thuộc về mô-đun nền tảng

nền tảng nhập khẩu

x = dir(nền tảng)
in(x)

Tự mình thử »

Ghi chú. Hàm dir() có thể được sử dụng trên tất cả các mô-đun, kể cả những mô-đun bạn tự tạo


Nhập Từ Mô-đun

Bạn có thể chọn chỉ nhập các bộ phận từ một mô-đun bằng cách sử dụng từ khóa mymodule.py0

Thí dụ

Mô-đun có tên mymodule có một chức năng và một từ điển

lời chào chắc chắn (tên)
print("Xin chào," + tên)

người1 = {
"Tên". "John",
"tuổi". 36,
"quốc gia". "Na Uy"
}

Thí dụ

Chỉ nhập từ điển person1 từ mô-đun

từ mymodule nhập person1

in (person1["tuổi"])

Chạy ví dụ »

Ghi chú. Khi nhập sử dụng từ khóa mymodule.py0, không sử dụng tên mô-đun khi đề cập đến các phần tử trong mô-đun. Thí dụ. mymodule.py3, không phải mymodule.py4

Trong Python, bạn có thể nhập thư viện chuẩn, các gói được cài đặt bằng pip, các gói của riêng bạn, v.v. bằng câu lệnh

# NG
import os, sys

# OK
import os
import sys
4

  • 5. Hệ thống nhập — Python 3. 10. 0 tài liệu

Bài viết này mô tả các nội dung sau

  • Các mô-đun, gói và thư viện trong Python
  • Cách sử dụng cơ bản của
    # NG
    import os, sys
    
    # OK
    import os
    import sys
    
    4
  • Cách viết
    # NG
    import os, sys
    
    # OK
    import os
    import sys
    
    4 theo khuyến nghị trong PEP8
  • Nhập hàm, biến, lớp, v.v.
    # NG
    import os, sys
    
    # OK
    import os
    import sys
    
    7
  • Nhập bằng bí danh.
    # NG
    import os, sys
    
    # OK
    import os
    import sys
    
    8
  • Nhập khẩu từ các gói
  • Các lỗi thường gặp liên quan đến nhập khẩu
    • # NG
      import os, sys
      
      # OK
      import os
      import sys
      
      9
    • from math import pi, radians
      
      0

Xem bài viết sau để biết đường dẫn tìm kiếm module

  • Kiểm tra và thêm đường dẫn tìm kiếm mô-đun với sys. đường dẫn trong Python

Liên kết được tài trợ

Các mô-đun, gói và thư viện trong Python

mô-đun

Trong Python, một mô-đun là một tệp xác định các hàm, lớp, v.v.

  • 6. Mô-đun — Python 3. 10. 0 tài liệu

gói

Thư mục chứa các mô-đun và

from math import pi, radians
1 được gọi là "gói thông thường".
from math import pi, radians
1 có thể là một tệp trống

Trong Trăn 3. 3 trở lên, các thư mục không chứa

from math import pi, radians
1 có thể được nhập dưới dạng gói. Các gói như vậy được gọi là "gói không gian tên"

thư viện

Mặc dù không được xác định nghiêm ngặt, các gói và mô-đun đôi khi được gọi là thư viện

Cách sử dụng cơ bản của # NG import os, sys # OK import os import sys 4

Ví dụ: nhập mô-đun toán học

  • toán học — Hàm toán học — Python 3. 10. 0 tài liệu

Với

from math import pi, radians
5, một mô-đun được nhập dưới dạng một đối tượng thuộc loại
from math import pi, radians
6. Bạn có thể kiểm tra tệp nào được nhập với ____6_______7

import math

print(type(math))
# 

print(math)
# 

nguồn.

Bạn có thể sử dụng các hàm và biến được xác định trong mô-đun với

from math import pi, radians
8,
from math import pi, radians
9,

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 

nguồn.

Nếu bạn muốn sử dụng trực tiếp các hàm hoặc biến của một mô-đun, hãy sử dụng

import math
import os
import sys

import Requests

import my_package1
import my_package2
0 được mô tả bên dưới. Lưu ý rằng
import math
import os
import sys

import Requests

import my_package1
import my_package2
1 gây ra lỗi

Cách viết # NG import os, sys # OK import os import sys 4 theo khuyến nghị trong PEP8

PEP8, hướng dẫn phong cách Python, mô tả cách viết câu lệnh

# NG
import os, sys

# OK
import os
import sys
4

Lưu ý đây chỉ là style guide nên sẽ không có lỗi dù bạn không viết theo cách này

Nhập nhiều mô-đun

Bạn có thể viết nhiều mô-đun được phân tách bằng dấu phẩy sau câu lệnh

# NG
import os, sys

# OK
import os
import sys
4, nhưng điều này không được khuyến nghị trong PEP8. Nhập khẩu thường phải trên các dòng riêng biệt

# NG
import os, sys

# OK
import os
import sys

nguồn.

Nếu bạn sử dụng

import math
import os
import sys

import Requests

import my_package1
import my_package2
0 để nhập hàm, biến, lớp, v.v. , như được giải thích tiếp theo, bạn có thể tách chúng bằng dấu phẩy

from math import pi, radians

nguồn.

Thứ tự các mô-đun

Các mô-đun nên được nhóm và nhập theo thứ tự sau, tùy thuộc vào loại của chúng. Tách mỗi nhóm bằng một dòng trống

  1. Thư viện tiêu chuẩn
  2. Thư viện bên thứ ba
  3. thư viện địa phương

Mặc dù nó không được viết bằng PEP8, nhưng mỗi mô-đun trong một nhóm thường được sắp xếp theo thứ tự bảng chữ cái

import math
import os
import sys

import Requests

import my_package1
import my_package2

nguồn.

Nhập hàm, biến, lớp, v.v. # NG import os, sys # OK import os import sys 7

Bạn có thể chỉ định và nhập các hàm, biến, lớp, v.v. được xác định trong mô-đun với

# NG
import os, sys

# OK
import os
import sys
7

Chỉ nhập một mặt hàng

Bạn có thể nhập các chức năng, v.v. với

import math
import os
import sys

import Requests

import my_package1
import my_package2
8

Các mặt hàng nhập khẩu có thể được sử dụng trực tiếp với

import math
import os
import sys

import Requests

import my_package1
import my_package2
9. Bản thân mô-đun không được nhập. Lỗi
from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
0 xuất hiện khi bạn cố gắng sử dụng các mục khác

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined

nguồn.

Nhập nhiều mặt hàng cùng lúc

Bạn có thể nhập nhiều hàm, biến, v.v. từ cùng một mô-đun cùng một lúc bằng cách viết chúng được phân tách bằng dấu phẩy

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793

nguồn.

Nếu một dòng quá dài, bạn có thể sử dụng dấu ngoặc đơn

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
1 để ngắt dòng

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045

nguồn.

Nhập tất cả các mặt hàng có from math import pi print(pi) # 3.141592653589793 # print(math.radians(180)) # NameError: name 'math' is not defined 2 (không nên dùng)

Với

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
2, tất cả các hàm, biến, v.v. được xác định trong mô-đun được nhập

from math import *

print(pi)
# 3.141592653589793

print(cos(0))
# 1.0

print(sin(0))

nguồn.

Nếu

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
4 được xác định trong một mô-đun, chỉ những tên trong
from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
4 được nhập

Lưu ý rằng việc nhập bằng cách sử dụng

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
2 không được khuyến nghị trong PEP8 vì không rõ tên nào tồn tại trong không gian tên nào

Liên kết được tài trợ

Nhập bằng bí danh. # NG import os, sys # OK import os import sys 8

Bạn có thể sử dụng

from math import pi

print(pi)
# 3.141592653589793

# print(math.radians(180))
# NameError: name 'math' is not defined
8 để nhập bằng bí danh. Nếu một bí danh được đưa ra, tên gốc không thể được sử dụng

Ví dụ về đặt bí danh cho một mô-đun

import math as m

print(m.pi)
# 3.141592653589793

# print(math.pi)
# NameError: name 'math' is not defined

nguồn.

Ví dụ đặt bí danh cho biến

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
0

nguồn.

Một số thư viện, chẳng hạn như NumPy và pandas, thường được nhập với tên viết tắt

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
1

Nhập khẩu từ các gói

Khi bạn nhập các mô-đun từ một gói, bạn cần cẩn thận về cách nhập chúng, tùy thuộc vào cấu trúc của chúng và

from math import pi, radians
1

Về cơ bản, tài liệu cho bạn biết cách nhập tệp, vì vậy chỉ cần làm theo hướng dẫn. Dưới đây là các ví dụ để giải thích rằng có nhiều mẫu khác nhau

urllib

Ví dụ: nhập các mô-đun và lớp từ thư viện chuẩn, urllib

  • urllib — Mô-đun xử lý URL — Python 3. 10. 0 tài liệu
  • cpython/Lib/urllib tại master · python/cpython

Các tệp (mô-đun) được lưu trữ trong thư mục

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
0 như sau.
from math import pi, radians
1 trống

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
2

Nếu bạn viết

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
2, bạn không thể sử dụng các mô-đun bên dưới nó. Ví dụ:
from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
3 gây ra lỗi
from math import pi, radians
0

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
3

nguồn.

Bạn cần nhập các mô-đun có

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
5

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
4

nguồn.

Bạn cũng có thể viết

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
6

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
5

nguồn.

Cũng có thể chỉ định một lớp được định nghĩa trong mô-đun và nhập nó

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
6

nguồn.

Lưu ý rằng nếu mã khởi tạo không được viết bằng

from math import pi, radians
1 như thế này, bạn cần nhập mô-đun bên dưới nó

Nếu bạn đang sử dụng IPython/Jupyter Notebook, bạn có thể sử dụng

from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
8 chỉ bằng cách nhập
from math import pi, radians

print(pi)
# 3.141592653589793

print(radians(180))
# 3.141592653589793
0. Hành vi này là do quá trình khởi động IPython gây ra

  • nhập urllib. phân tích cú pháp không thành công khi Python chạy từ dòng lệnh

bộ sưu tập

Như một ví dụ khác, giới thiệu các bộ sưu tập

  • bộ sưu tập — Kiểu dữ liệu vùng chứa — Python 3. 10. 0 tài liệu

Thư mục

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
0 bao gồm các phần sau

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
7

Trong các bộ sưu tập, các lớp như

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
1 và
from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
2 được định nghĩa trong
from math import pi, radians
1 thay vì lưu trữ các tệp mô-đun như urllib

  • cpython/Lib/bộ sưu tập tại master · python/cpython

Trong trường hợp này, khi bạn nhập một gói, bạn có thể sử dụng lớp là

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
4

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
8

nguồn.

Bạn không thể nhập các lớp có

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
4

print(math.radians(180))
# 3.141592653589793

print(type(math.radians))
# 

print(math.pi)
# 3.141592653589793

print(type(math.pi))
# 
9

nguồn.

Bạn có thể nhập các lớp học với

import math
import os
import sys

import Requests

import my_package1
import my_package2
0

# NG
import os, sys

# OK
import os
import sys
0

nguồn.

NumPy

Ví dụ về thư viện bên thứ ba, NumPy

Trong NumPy, mỗi gói phụ được nhập vào

from math import pi, radians
1 trong thư mục
from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
8

  • numpy / numpy. Kho lưu trữ chính Numpy

Bạn không cần nhập từng mô-đun. Chỉ cần viết

from math import (
    e,
    exp
)

print(e)
# 2.718281828459045

print(exp(1))
# 2.718281828459045
9 để sử dụng các chức năng khác nhau

scikit-học

Trường hợp của scikit-learning thì khác

scikit-learning không nhập các gói con trong

from math import pi, radians
1 trong thư mục
from math import *

print(pi)
# 3.141592653589793

print(cos(0))
# 1.0

print(sin(0))
1

  • scikit-learning/scikit-learning. scikit-học. máy học trong Python

Bạn cần nhập các gói con một cách rõ ràng, như sau

# NG
import os, sys

# OK
import os
import sys
1

nguồn.

Các lỗi thường gặp liên quan đến nhập khẩu

# NG import os, sys # OK import os import sys 9

Lỗi không tìm thấy mô-đun

# NG
import os, sys

# OK
import os
import sys
2

Tên của mô-đun hoặc đường dẫn tìm kiếm mô-đun có thể sai

  • Kiểm tra và thêm đường dẫn tìm kiếm mô-đun với sys. đường dẫn trong Python

Như thể hiện trong ví dụ về các bộ sưu tập ở trên,

# NG
import os, sys

# OK
import os
import sys
9 cũng được nâng lên khi bạn cố gắng nhập một lớp thay vì một mô-đun. Sử dụng
import math
import os
import sys

import Requests

import my_package1
import my_package2
0 để nhập một hàm hoặc một lớp

from math import pi, radians 0

Lỗi mô-đun đã nhập không có thuộc tính được chỉ định

# NG
import os, sys

# OK
import os
import sys
3

Có thể là không nhập đúng tệp

Ví dụ: khi bạn viết

from math import pi, radians
5, ưu tiên hàng đầu để tìm kiếm mô-đun là cùng thư mục với tệp tập lệnh được thực thi, vì vậy nếu có một tệp có tên
from math import *

print(pi)
# 3.141592653589793

print(cos(0))
# 1.0

print(sin(0))
7 trong thư mục, thì tệp đó sẽ được nhập

  • Kiểm tra và thêm đường dẫn tìm kiếm mô-đun với sys. đường dẫn trong Python

Sử dụng

from math import *

print(pi)
# 3.141592653589793

print(cos(0))
# 1.0

print(sin(0))
8 để kiểm tra xem tệp có được nhập từ vị trí dự kiến ​​hay không và nếu không, hãy đổi tên hoặc di chuyển tệp

Điều gì xảy ra nếu tôi nhập cùng một mô-đun hai lần Python?

Điều gì xảy ra nếu một mô-đun được nhập hai lần? . there is no performance loss by importing it again.

Điều gì xảy ra nếu tôi nhập cùng một mô-đun hai lần?

Nếu nhiều mô-đun nhập cùng một mô-đun thì angular chỉ đánh giá mô-đun đó một lần (Khi gặp mô-đun lần đầu tiên). Nó tuân theo điều kiện này ngay cả khi mô-đun xuất hiện ở bất kỳ cấp độ nào trong hệ thống phân cấp NgModules đã nhập. 1.

Thứ tự nhập liệu có quan trọng với Python không?

Lệnh nhập không thành vấn đề . Nếu một mô-đun phụ thuộc vào các mô-đun khác, thì nó cần phải tự nhập các mô-đun đó. Python xử lý từng. py dưới dạng một đơn vị độc lập theo như nội dung hiển thị trong tệp đó.

Một mô-đun được tải bao nhiêu lần khi được nhập nhiều lần?

Mã mô-đun chỉ được đánh giá lần đầu tiên khi được nhập. Nếu cùng một mô-đun được nhập vào nhiều mô-đun khác, mã của nó chỉ được thực thi một lần, trong lần nhập đầu tiên. Sau đó, xuất khẩu của nó được trao cho tất cả các nhà nhập khẩu tiếp theo. Việc đánh giá một lần có những hậu quả quan trọng mà chúng ta nên biết