Nối thêm đường dẫn sys python

Nếu bạn thoát khỏi trình dịch thông tin và chạy lại nó, những gì bạn định nghĩa [hàm và biến] đều bị mất. Do đó, nếu bạn muốn viết một chương trình dài hơn, thì tốt nhất là bạn nên sử dụng một trình soạn thảo để chuẩn bị bắt đầu cho trình thông dịch và chạy nó với tệp này. Việc này được gọi là viết kịch bản [script]. Khi chương trình của bạn trở nên dài hơn, bạn sẽ muốn tách nó ra thành nhiều tập tin để dễ dàng duy trì. Bạn sẽ muốn sử dụng một hàm thuận tiện mà bạn đã viết trong nhiều chương trình mà không cần phải sao chép lại định nghĩa của nó vào các chương trình đó

Để hỗ trợ công việc này, Python có một cách đặt định nghĩa cho một tập tin và sử dụng chúng trong một kịch bản hoặc trong một phiên làm việc với trình thông dịch. Tập tin này được gọi là mô-đun [mô-đun];

Mô-đun là một tập tin chứa các định nghĩa và câu lệnh Python. File name is ten of module with the end. py được gắn vào. Trong một mô-đun, tên của mô-đun [là một chuỗi] có thể được truy cập thông qua một biến toàn cục

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
0. Ví dụ, sử dụng trình soạn thảo của bạn để tạo một tập tin đặt tên là fibo. py in the current directory at with after content

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result

Bây giờ hãy chạy trình thông dịch Python và nhập mô-đun này với dòng lệnh sau

Việc làm này sẽ không nhập trực tiếp các tên hàm định nghĩa trong

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
1 vào bảng ký hiệu [bảng ký hiệu]; . Sử dụng tên mô-đun bạn có thể truy cập các chức năng

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

Nếu bạn định sử dụng một hàm xuyên suốt, thì bạn có thể gán nó vào một bộ tên cục bộ

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377

Mô-đun có thể chứa các câu lệnh khả thi cũng như các định nghĩa hàm. Các câu lệnh này nhằm mục đích khởi tạo mô-đun. Chúng sẽ chỉ được chạy lần đầu mô-đun được nhập ở đâu đó

Mỗi mô-đun có một bảng ký hiệu riêng của nó và được sử dụng dưới dạng bảng toàn cục đối với mọi hàm được định nghĩa trong mô-đun. Do đó, tác giả của một mô-đun có thể sử dụng các biến cục bộ trong mô-đun mà không phải lo lắng về việc trùng lặp với các biến cục bộ của người dùng. Mặt khác, nếu bạn biết mình đang làm gì, bạn có thể truy cập vào các biến toàn cục của mô-đun với cùng một cách sử dụng để truy cập các chức năng của nó.

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
3

Mô-đun có thể nhập các mô-đun khác. Thông thường [nhưng không bắt buộc] ta hay để tất cả các lệnh nhập vào đầu một mô-đun [hoặc kịch bản]. Tên của mô-đun đã nhập được đặt trong bảng ký hiệu toàn cục của mô-đun nhập vào nó

Có một biến thể của câu lệnh nhập để nhập nhiều tên trực tiếp từ một mô-đun vào trong bảng ký hiệu của mô-đun nhập. Ví dụ

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377

Câu lệnh này không đưa tên mô-đun được nhập vào bảng ký hiệu cục bộ [làm điều đó trong ví dụ này,

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
1 chưa được định nghĩa]

And an other variable to input all the name from a module module

>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377

Câu lệnh này nhập tất cả các tên trừ những tên bắt đầu bằng dấu gạch chân [

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
5]


6. 1. 1 Path find module

Khi tên thư rác được nhập vào mô-đun mô-đun, thông tin dịch vụ sẽ tìm thấy tên tệp thư rác. py trong thư mục hiện tại, rồi trong danh sách các thư mục được chỉ định bởi biến môi trường PYTHONPATH. Biến này có cùng cú pháp như biến môi trường PATH, cùng chứa một danh sách tên các thư mục. Khi PYTHONPATH chưa được thiết lập hoặc khi tệp không được tìm thấy, công việc tìm kiếm sẽ tiếp tục tìm trong đường dẫn mặc định theo tùy chọn khi cài đặt Python; . /usr/local/lib/python

Thật vậy, mô-đun được tìm thấy trong danh sách các thư mục được chỉ định bởi biến

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 đã được thiết lập từ thư mục chứa nguồn gốc kịch bản [hoặc thư mục hiện tại], PYTHONPATH và các định dạng mặc định khi cài đặt. Điều này cho phép thay đổi chương trình Python hoặc thay thế đường dẫn tìm mô-đun. Lưu ý rằng vì thư mục chứa kịch bản đang chạy nằm trong đường dẫn tìm kiếm, tên của kịch bản hay nhất nhất thiết phải không trùng với tên của các mô-đun chuẩn, nếu không thì Python sẽ cố gắng tải kịch bản như một mô-đun . Thông thường điều này sẽ gây ra lỗi. Xem mục , ``Các mô-đun chuẩn'' để biết thêm chi tiết

Như một cách quan trọng để tăng tốc quá trình khởi động của các chương trình rút ngắn sử dụng nhiều mô-đun tiêu chuẩn, nếu tệp có tên thư rác. pyc tồn tại trong thư mục chứa thư rác. py được tìm thấy, tập tin này được giả định là phiên bản đã được ``biên dịch byte'' [byte-compile] của mô-đun spam. Change time of spam version. py used for spam. pyc được lưu lại trong thư rác. pyc, and file. pyc sẽ bị loại bỏ nếu chúng không khớp nhau

Thông thường, bạn không cần phải làm gì cả để tạo thư rác tập tin. pyc. Spam nào. py đã được biên dịch thành công, Python sẽ thử ghi phiên bản đã biên dịch ra thư rác. pyc. Nếu công việc ghi chép này thất bại thì cũng không có gì sai sót xảy ra; . pyc sẽ bị đánh dấu là không hợp lệ và sẽ bị loại bỏ thông qua điều này. Nội dung của thư rác tập tin. pyc không phụ thuộc vào hệ thống, do đó một thư mục mô-đun Python có thể được chia cắt với nhiều máy trên các kiến ​​trúc khác nhau

Một vài mẹo cho chuyên gia

  • Khi Python thông báo dịch được chạy với cờ -O , mã tối ưu được tạo và lưu trong các tệp. pyo. Trình tối ưu hóa hiện tại không giúp được gì nhiều, nó chỉ bỏ qua các lệnh khẳng định. When -O used, all bytecode [mã byte] đều được ưu tiên tối đa;
  • Truyền hai cờ -O vào trình thông dịch Python [-OO] sẽ khiến trình biên dịch mã byte thực hiện những điều tối ưu mà trong những trường hợp hiếm hoi có thể dẫn đến hỏng hóc trong chương trình. Hiện tại chỉ có các chuỗi
    >>> fib = fibo.fib
    >>> fib[500]
    1 1 2 3 5 8 13 21 34 55 89 144 233 377
    
    9 được bỏ qua mã byte, làm cho tập tin. pyo compacter. Vì một vài chương trình phụ thuộc vào các chuỗi này, bạn chỉ nên sử dụng tùy chọn này nếu bạn biết bạn đang làm gì
  • Một chương trình không chạy nhanh hơn khi nó được đọc từ một tập tin. pyc cỏ khô. pyo so with when it was read from file. con ; . pyc cỏ khô. pyo is speed they are loading
  • Khi một kịch bản được chạy bằng cách nhập tên của nó vào dòng lệnh, thì mã byte của kịch bản không bao giờ được ghi vào tập tin. pyc cỏ khô. pyo. Do đó, thời gian khởi động của một kịch bản có thể được giảm xuống bằng cách chuyển hầu hết mã của nó thành mô-đun và tạo một kịch bản nhỏ để nhập mô-đun đó. You can also run the file. pyc cỏ khô. pyo trực tiếp từ dòng lệnh
  • Can be used Spam file. pyc [thư rác hay. pyo when -O used] and no spam file. py of the same module. Công việc này được tận dụng để phân phối một thư viện Python dưới một dạng hơi khó để dịch ngược
  • Compileall module module can to create a files. pyc [or files. pyo when -O used] for all module in a directory

Python có một thư viện các mô-đun chuẩn, được nói tới trong một tài liệu khác, Tham khảo thư viện Python [từ nay được gọi là ``Tài liệu tham khảo''']. Một vài mô-đun được chuyển thẳng vào trình thông dịch; . Tập hợp các mô-đun này là một tùy chọn cấu hình hợp lệ tùy chọn thuộc hệ thống. Ví dụ, mô-đun amip chỉ có trên các hệ thống hỗ trợ Amoeba. Cần phải gọi đến mô-đun. sys, được đưa vào trong mọi trình thông dịch Python. Các biến

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
0 và
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
1 định nghĩa các chuỗi được sử dụng như dấu nhắc chính và phụ

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
7

Hai biến này chỉ được định nghĩa khi thông báo dịch chạy ở chế độ tương tác

Biến

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 là một danh sách các chuỗi quyết định đường dẫn tìm kiếm các mô-đun của trình thông dịch. Nó được khởi động theo đường dẫn mặc định từ biến môi trường PYTHONPATH, hoặc từ một giá trị có sẵn nếu PYTHONPATH không được thiết lập sẵn. Bạn có thể sửa nó bằng cách sử dụng các công cụ trên danh sách

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
9

Hàm dir[] có sẵn được sử dụng để tìm tên mô-đun định nghĩa. Nó trả về một danh sách các chuỗi sắp xếp

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
0

Không có thông số, dir[] liệt kê các tên bạn đã định nghĩa

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
1

Lưu ý rằng nó liệt kê mọi loại tên. biến, mô-đun, hàm, v. v

dir[] không liệt kê tên của các hàm và biến có sẵn. Nếu bạn muốn có danh sách của chúng, thì chúng được định nghĩa trong mô-đun chuẩn __builtin__

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
2

Package [gói] là một cách để cấu trúc vùng tên mô-đun của Python bằng cách sử dụng ``tên mô-đun có dấu''. Ví dụ, tên mô-đun A. B only ra module name "B" in a package name "A". Cũng giống như việc sử dụng mô-đun giúp tác giả của các mô-đun khác nhau không phải lo lắng về các biến toàn cục của nhau, việc sử dụng tên mô-đun có dấu chấm giúp tác giả của các gói đa mô-đun như

Giả sử bạn muốn thiết kế một tập hợp các mô-đun mô-đun [một ``gói''] nhằm mục đích xử lý các tập tin và dữ liệu âm thanh. Có nhiều định dạng tệp âm thanh định dạng [thường được nhận định dạng dựa trên phần mở rộng, ví dụ. . sóng,. aiff,. au], bạn cần phải tạo và duy trì một tập hợp luôn tăng các mô-đun để việc chuyển đổi giữa các định dạng khác nhau. Ngoài ra còn có nhiều nhiệm vụ khác nhau mà bạn muốn thực hiện với dữ liệu âm thanh [ví dụ như tổng hợp, thêm tiếng vang, áp dụng chức năng làm bằng, tạo ra hiệu ứng nổi], do đó bạn sẽ không tiếp tục viết một loạt . Sau đây là một cấu trúc minh họa cấu trúc cho gói của bạn [được trình bày theo cách của một hệ thống phân cấp tệp]

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
0

Khi nhập một gói, Python tìm trong các thư mục từ

>>> fib = fibo.fib
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 để tìm thư mục con của gói

File __init__. py là cần thiết để Python biết các thư mục chứa các gói; . Trong trường hợp đơn giản nhất, __init__. py có thể chỉ là một gói tập tin rỗng, nhưng nó cũng có thể thực thi mã thiết lập của hoặc biến thiết lập thiết lập

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
4 , sẽ được nhắc đến sau

Người dùng gói này có thể nhập từng mô-đun riêng lẻ từ gói, ví dụ

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
1

Nó sẽ tải mô-đun con Sound. Các hiệu ứng. tiếng vang. It must be reference by full name

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
2

Cách nhập mô-đun con other is

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
3

Nó luôn tải mô-đun con echo, và làm cho nó có thể truy cập được mà không cần phần tên gói, do đó nó cũng có thể được sử dụng như sau

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
4

Một biến thể khác là hàm nhập hoặc biến mình muốn một cách trực tiếp

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
5

Một lần nữa, lệnh này tải mô-đun con echo, nhưng chức năng echofilter[] của nó có thể được sử dụng trực tiếp

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
6

Lưu ý rằng khi sử dụng

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
5, mục có thể hoặc là mô-đun con [hoặc gói con] của gói, hoặc là bất kỳ tên nào khác được định nghĩa trong gói, giả mạo như một hàm, lớp hoặc biến. Câu lệnh
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 trước khi hết kiểm tra xem mục đã được định nghĩa trong gói; . Nếu không thể tìm thấy mô-đun, biệt lệ ImportError sẽ được nâng cấp

Ngược lại, khi sử dụng cú pháp như

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
7, mỗi mục trừ mục cuối phải là một gói;


6. 4. 1 Nhập * từ một gói

Bây giờ chuyện gì xảy ra khi bạn viết

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
8? . Đáng tiếc là nhiệm vụ này không chạy ổn định trên hệ thống Mac và Windows vì tệp hệ thống không luôn chứa thông tin chính xác phân tích về phân biệt hoa/thường trong tên tệp. Trên các hệ thống này, không có cách nào đảm bảo chắc chắn để biết nếu một tập tin ECHO. PY must be input as a echo module echo, Echo or ECHO. [Ví dụ, Windows 95 có thói quen là hiện mọi tên tệp với ký tự viết hoa đầu tiên. ] Chế độ hủy tên 8+3 của DOS cũng tạo ra thêm một vấn đề thú vị với các tên mô-đun dài

Giải pháp duy nhất là để tác động gói chỉ định rõ mục tiêu của gói. Câu lệnh

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 sử dụng cách thức sau. if __init__ code. py của gói có nghĩa là một danh sách tên
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
4, nó sẽ được sử dụng làm danh sách của các tên mô-đun cần được nhập khi gặp
>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
1. Các tác giả gói sẽ phải tự cập nhật danh sách này mỗi khi phiên bản mới của gói được phát hành. Tác giả gói cũng có thể không hỗ trợ nó, nếu họ không thấy cách sử dụng
>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
2 là hữu ích đối với gói của họ. Ví dụ, tập tin Sounds/Effects/__init__. py could contain after code

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
7

Điều này có nghĩa là

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
8 sẽ nhập ba mô-đun được chỉ định từ gói Sound

Nếu

>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
4 không được định nghĩa, câu lệnh
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
8 không nhập mọi mô-đun con từ gói Âm thanh. Hiệu ứng vào vùng tên hiện tại; . Các hiệu ứng đã được nhập [có thể chạy mã khởi động trong __init__. py] và sau đó nhập các tên được định nghĩa trong gói. Nó bao gồm các tên [và mô-đun con đã được tải] được định nghĩa bởi __init__. py. Nó cũng bao gồm các mô-đun con của gói đã được tải bởi câu lệnh
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
6 trước đó. View this code

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
8

Trong ví dụ này, các mô-đun

>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
7 và
>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
8 được nhập vào vùng tên hiện tại vì chúng được định nghĩa trong gói Sound. Hiệu ứng khi câu lệnh
>>> from fibo import *
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
9 được thực thi. [ Đủ sẽ có cùng kết quả khi
>>> from fibo import fib, fib2
>>> fib[500]
1 1 2 3 5 8 13 21 34 55 89 144 233 377
4 được định nghĩa. ]

Lưu ý là việc bình thường việc nhập

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
71 từ một mô-đun hoặc gói được coi là xấu, vì nó hay dẫn đến các mã khó đọc. Tuy nhiên, khi sử dụng trong một phiên làm việc tương tác, nó giúp tiết kiệm điện năng của các phím nhập và một vài mô-đun được thiết kế để chỉ xuất các tên theo một số mẫu cụ thể.

Nhớ rằng, không có gì sai trái với việc sử dụng

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
72. Đúng ra, đây là cách viết được khuyến khích trừ khi nhập mô-đun [mô-đun nhập] cần sử dụng mô-đun con có cùng tên ở một gói khác

Các mô-đun đồng bộ cần phải tham chiếu xen kẽ nhau. Ví dụ, Mô-đun vòm bao quanh có thể sử dụng tiếng vang mô-đun. Trong thực tế, các gói tham chiếu này quá phổ biến biến ảo trong khoảng câu lệnh nhập đầu tiên sẽ tìm trong phần chứa [gói chứa] trước khi tìm trong đường dẫn tìm kiếm mô-đun chuẩn. Do đó, mô-đun bao quanh có thể đơn giản sử dụng

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
73 hoặc
# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
74. Nếu mô-đun được nhập [mô-đun đã nhập] không thể tìm thấy trong gói chứa [là gói mà mô-đun hiện tại là một mô-đun con], câu lệnh nhập tìm mô-đun cấp cao nhất có cùng tên

Khi các gói được cấu trúc thành các gói con [như gói Âm thanh trong ví dụ], không có đường tắt để tham chiếu tới các mô-đun con của gói kế cận - tên đầy đủ của gói con phải được chỉ định. Ví dụ, nếu mô-đun Sound. bộ lọc. bộ phát âm cần sử dụng mô-đun echo trong gói Âm thanh. Effects , it may be used

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
75

Bắt đầu từ Python 2. 5, bên ngoài việc nhập đối tương đối rõ ràng [nhập tương đối ngầm] đã nói, bạn có thể viết lệnh nhập đối tương đối [nhập tương đối rõ ràng] với kiểu

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
76 của câu lệnh nhập. Các lệnh nhập tương ứng với đối số xác định sử dụng dấu chấm ở đầu để chỉ định các gói hiện tại và gói cha có mặt trong lệnh nhập. Ví dụ từ mô-đun bao quanh, bạn sẽ sử dụng

>>> fibo.fib[1000]
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2[100]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
9

Lưu ý cả hai lệnh nhập đối số tương ứng và hiểu biết đều dựa vào tên của mô-đun hiện tại. Vì tên của mô-đun chính luôn luôn là

# Fibonacci numbers module

def fib[n]:    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

def fib2[n]: # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
        result.append[b]
        a, b = b, a+b
    return result
77, nên mô-đun cần được sử dụng như mô-đun chính của một chương trình Python nên luôn luôn cùng câu lệnh nhập đối tuyệt vời.

Các gói còn có thêm một thuộc tính đặc biệt khác, __path__. Nó được khởi tạo là danh sách chứa tên của thư mục chứa tập tin __init__. py của gói trước khi mã hóa trong tệp được thực thi. This variable can be change;

Mặc dù tính năng này không được sử dụng thường xuyên, nhưng nó có thể được sử dụng để mở rộng tập hợp các mô-đun mô-đun được tìm thấy trong một gói

Chủ Đề