2013-07-08 14 views
10

Tôi có một kịch bản Python chỉ với 2 dòng:Tại sao mã Python này chạy hai lần?

import requests 
print len(dir(requests)) 

It in:

12 
48 

Khi tôi in danh sách thực tế dir(requests), tôi có được điều này:

['__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__'] 
['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', 'adapters', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'utils'] 

tôi 'm đoán có nhiều mô-đun requests hoặc một cái gì đó tương tự. Hãy giúp tôi.

+0

"Các mảng thực tế" là gì? Khi nào bạn in chúng? Thêm thông tin, xin vui lòng. – kindall

+0

Rất tiếc. Danh sách * được trả về bởi 'dir (yêu cầu)'. Đã chỉnh sửa – Bruce

+0

Nhưng bạn chỉ làm điều đó một lần. Trong trường hợp nào bạn nhận được mỗi trường hợp? – kindall

Trả lời

13

Bạn đã đặt cho tập lệnh của mình tên của mô-đun chuẩn hoặc tên khác được nhập bởi gói requests. Bạn đã tạo một lần nhập vòng tròn.

yourscript -> import requests -> [0 or more other modules] -> import yourscript -> import requests again 

requests không hoàn nhập khẩu lần đầu tiên bạn có thể nhìn thấy những khác biệt trong danh sách các đối tượng được hỗ trợ.

Đừng làm điều đó. Đổi tên kịch bản của bạn thành một cái gì đó khác và nó sẽ hoạt động.

+1

Chúa Giêsu. Đó là 'http.py'. – Bruce

1

Đầu tiên là mô-đun của riêng bạn Thứ hai là mô-đun để xử lý các yêu cầu HTTP. Đổi tên mô-đun riêng của ur