Python nếu __name__ == __main__ lỗi cú pháp

今日遇到一个python错误:

File "main.py", line 107
   if __name__ == "__main__"
                           ^
   SyntaxError: invalid syntax

搜了一下,网上的说法基本都是if __name__if之后缺少一个空格。
但是我这里是有空格的,手动删掉空格重新插入空格也不行。

最后查了半天,因为中间有许多注释的代码,把那些代码删掉就好了。后来由于第一次,发现是因为在某个函数中间有一个空行,删除空行就好了。想来前面的冗余代码可能也带入了空行。

总之解决方案:

  1. 检查if __name__if之后是否缺少一个空格。
  2. 检查函数是否有多余的空行
  3. 检查注释的冗余代码,删了可能有意想不到的效果。

Để phác thảo những điều cơ bản. Biến toàn cục, __name__, trong mô-đun là điểm vào chương trình của bạn, là '__main__'. Mặt khác, đó là tên bạn nhập mô-đun theo. Vì vậy, mã bên dưới khối if sẽ chỉ chạy nếu mô-đun là điểm vào chương trình của bạn

Điều gì sẽ xảy ra nếu __name__ == “__main__”. làm? . Nếu trình thông dịch python đang chạy mô-đun đó [tệp nguồn] làm chương trình chính, nó sẽ đặt biến __name__ đặc biệt có giá trị “__main__”

chắc chắn chính []. in ["xin chào thế giới. "] nếu __name__ == "__main__". main[] print["Guru99"] Guru99 được in trong trường hợp này. Đây là lời giải thích, Khi trình thông dịch Python đọc một tệp nguồn, nó sẽ thực thi tất cả mã được tìm thấy trong đó

Mỗi mô-đun trong Python có một thuộc tính đặc biệt được gọi là __name__. Giá trị của thuộc tính __name__ được đặt thành '__main__' khi mô-đun chạy dưới dạng chương trình chính. Mặt khác, giá trị của __name__ được đặt để chứa tên của mô-đun. Hãy xem xét đoạn mã sau để hiểu rõ hơn

Sau đây là mô hình phổ biến nhất khiến mọi người vấp ngã. [crayon-5ec61cbce91fc553895426/] Mỗi mô-đun Python xác định một biến có tên __name__. Nó có thể chứa tên mô-đun hoặc __main__ tùy thuộc vào cách một mô-đun được thực thi

Ví dụ: nếu trình thông dịch python đang chạy mô-đun đó [tệp nguồn] làm chương trình chính, nó sẽ đặt biến __name__ đặc biệt có giá trị __main__. Nếu tệp này đang được nhập từ mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun

def get_first[dữ liệu]. trả lại dữ liệu [0] nếu __name__ == '__main__'. data = [1, 2, 9, 8, 3, 4, 7, 6, 5] print[get_first[data]] Không phụ thuộc vào kích thước dữ liệu đầu vào, nó sẽ luôn có cùng thời gian chạy vì nó chỉ nhận giá trị đầu tiên

Đang thực thi chuỗi mà không cần đợi sự kiện"] print ["Giá trị được in = ", i] if __name__ == '__main__'. # Khởi tạo một đối tượng sự kiện event_obj = threading. Sự kiện # bắt đầu chuỗi người sẽ đợi sự kiện thread1 = threading

nếu __name__ == '__main__'. vượt qua Nếu bạn không có khoảng trắng sau if , nó không được phân tích cú pháp dưới dạng một từ trong ngôn ngữ, mà là một phần của một từ duy nhất if__name__. Hơn nữa, như một vấn đề về phong cách tốt, bạn nên sử dụng khoảng trắng ở mọi nơi mà PEP-8 khuyên bạn, điều này cũng bao gồm xung quanh == sigil

nếu __name__ == "__main__". là do bạn có lỗi cú pháp trước đó trong mã, nhưng phải đến khi trình thông dịch đọc đến cuối câu lệnh này thì nó mới nhận ra rằng có vấn đề. Một lỗi cú pháp phổ biến mà bạn có thể mắc phải là thiếu dấu ngoặc đơn đóng ở dòng cuối cùng của mã trước câu lệnh này

Khi bạn thực thi hàm main, nó sẽ đọc câu lệnh "if" và kiểm tra xem __name__ có bằng __main__ không. Trong Python "if__name__== "__main__" cho phép bạn chạy các tệp Python dưới dạng các mô-đun có thể tái sử dụng hoặc các chương trình độc lập

đi vào hình ảnh. Khi một chương trình python bắt đầu thực thi, nó sẽ đặt một vài biến đặc biệt, __name__ là một trong số đó. Nó chứa giá trị __main__ nếu đó là chương trình chính đang được thực thi. Nhưng nó sẽ không có giá trị như __main__ được đặt, nếu nó được nhập và thực thi, vì nó không phải là chương trình chính khi được nhập

con trăn mới. Hàm python-shell-send-buffer của el rất thông minh và thay thế các dòng if __name__ == '__main__' bằng thứ gì đó không khớp, để tránh mã thực thi vốn chỉ chạy trong tập lệnh. Bạn có thể buộc điều đó được thực thi bằng cách chuyển tiền tố arg

câu lệnh if == false và tập lệnh trong __main__ sẽ không được thực thi Khi mã được thực thi, nó sẽ kiểm tra tên mô-đun với "if. " Cơ chế này đảm bảo, chức năng chính chỉ được thực thi khi chạy trực tiếp chứ không phải khi nhập dưới dạng module

Bạn có thể sử dụng các mẫu trực tiếp như trong video hướng dẫn này. Câu trả lời nhanh này là sử dụng command+j [Mac] hoặc ctrl+j [Windows] để hiển thị danh sách mẫu trực tiếp, sau đó nhập "m" để tìm kiếm lối tắt đến __name__=='__main__', sau đó nhấn enter

Chương trình Python [pt3. py] đã được thực thi trực tiếp [trái ngược với việc được nhập từ một chương trình khác] và chúng ta thấy biến toàn cục đặc biệt __name__ có giá trị __main__. Điều này sẽ gọi hàm main[] và khi main kết thúc, nó sẽ thoát, cung cấp cho hệ thống mã trả về là kết quả của hàm main[]

Lập trình phía máy chủ Python Lập trình. Không giống như các ngôn ngữ lập trình khác, python không được thiết kế để bắt đầu thực thi mã từ hàm chính một cách rõ ràng. Một biến đặc biệt gọi là __name__ cung cấp chức năng của hàm main

__name__ [Một biến đặc biệt] trong Python Vì không có hàm main[] trong Python, nên khi lệnh chạy chương trình python được đưa cho trình thông dịch, đoạn mã ở mức 0 sẽ được thực thi

Biến __name__ [hai dấu gạch dưới trước và sau] là một biến Python đặc biệt. Nó nhận được giá trị của nó tùy thuộc vào cách chúng tôi thực thi tập lệnh chứa. Đôi khi bạn viết một tập lệnh với các chức năng cũng có thể hữu ích trong các tập lệnh khác. Trong Python, bạn có thể nhập tập lệnh đó dưới dạng mô-đun trong tập lệnh khác

var_one và var_two là hai biến được định nghĩa trong đoạn mã trên. Cùng với các biến, một hàm có tên func_one cũng được định nghĩa. Một lưu ý quan trọng cần ghi nhớ là mọi thứ đều là đối tượng trong Python, kể cả hàm

Trước khi thực thi mã, trình thông dịch Python đọc tệp nguồn và xác định một vài biến đặc biệt/biến toàn cục. Nếu trình thông dịch python đang chạy mô-đun đó [tệp nguồn] làm chương trình chính, nó sẽ đặt biến __name__ đặc biệt có giá trị “__main__”

du lịch điện tử. com là nơi mới nhất để tìm kiếm, cung cấp kết quả hàng đầu từ khắp nơi trên web. Nội dung được cập nhật hàng ngày để học lập trình python

TheAnswerHub là điểm đến hàng đầu để tìm câu trả lời trực tuyến. Duyệt nội dung của chúng tôi ngày hôm nay. Tìm nơi học python trên TheAnswerHub. com

Nếu trình thông dịch python đang chạy mô-đun đó [tệp nguồn] làm chương trình chính, nó sẽ đặt biến __name__ đặc biệt có giá trị “__main__”. Nếu tệp này đang được nhập từ mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun. Tên của mô-đun có sẵn dưới dạng giá trị cho biến toàn cục __name__

Bất kỳ chương trình nào trong python được nhập dưới dạng mô-đun sẽ có biến __name__ được đặt thành tên của mô-đun. Trong tất cả các trường hợp khác, nó sẽ là giá trị mặc định của __main__ Khi myfirstmodule được thực thi từ một chương trình khác dưới dạng mô-đun, thì giá trị của __name__ trở thành "myfirstmodule" [nghĩa là. tên của mô-đun]

'__main__' là tên của phạm vi mà mã cấp cao nhất thực thi. __name__ của mô-đun được đặt bằng '__main__' khi được đọc từ đầu vào tiêu chuẩn, tập lệnh hoặc từ lời nhắc tương tác

Nếu Python đang tải tệp mã nguồn này làm chương trình chính [i. e. tệp bạn chạy], thì nó sẽ đặt biến __name__ đặc biệt cho tệp này có giá trị "__main__". Nếu điều này đang được nhập từ một mô-đun khác, __name__ sẽ được đặt thành tên của mô-đun đó

Khi Python chạy "tệp nguồn" làm chương trình chính, nó đặt biến đặc biệt [__name__] có giá trị ["__main__"]. Khi bạn thực thi hàm main, nó sẽ đọc câu lệnh "if" và kiểm tra xem __name__ có bằng __main__ không

Khi tạo một mô-đun Python, người ta thường làm cho mô-đun thực thi một số chức năng [thường có trong một hàm chính] khi chạy dưới dạng điểm vào của chương trình. Điều này thường được thực hiện với thành ngữ phổ biến sau được đặt ở cuối hầu hết các tệp Python. Bạn có thể nhận được ngữ nghĩa tương tự cho gói Python với __main__. py

CHỨC NĂNG CHÍNH CỦA PYTHON là điểm khởi đầu của bất kỳ chương trình nào. Khi chương trình được chạy, trình thông dịch python sẽ chạy mã tuần tự. Chức năng chính chỉ được thực thi khi nó được chạy dưới dạng chương trình Python. Nó sẽ không chạy chức năng chính nếu nó được nhập dưới dạng mô-đun

Nhiều mô-đun Python cũng có thể gọi được dưới dạng các tập lệnh độc lập. PEP này đề xuất rằng một chức năng đặc biệt gọi là __main__[] sẽ phục vụ mục đích này

$ trăn xin chào. py xin chào, __main__ Tất cả hành vi này phụ thuộc vào biến đặc biệt __name__ mà python sẽ đặt dựa trên việc thư viện được nhập hay chạy trực tiếp bởi trình thông dịch. Nếu chạy trực tiếp, nó sẽ được đặt thành __main__. Nếu được nhập, nó sẽ được đặt thành tên thư viện [trong trường hợp này là xin chào]

Khoảng trắng hàng đầu có ý nghĩa quan trọng trong các câu lệnh Python. Khi được gọi với -m module-name, mô-đun đã cho nằm trên đường dẫn mô-đun Python và được thực thi dưới dạng tập lệnh. Ở chế độ không tương tác, toàn bộ đầu vào được phân tích cú pháp trước khi được thực thi

Một mô-đun là một tệp chứa các định nghĩa và câu lệnh Python. Tên tệp là tên mô-đun có hậu tố. py nối thêm. Trong một mô-đun, tên của mô-đun [dưới dạng chuỗi] có sẵn dưới dạng giá trị của biến toàn cục __name__

nếu __tên__. = '__chính__'. # Thực hiện một số điều hữu ích Chạy một điều kiện nếu tệp là tệp chính và một điều kiện khác nếu không phải tệp. nếu __name__ == '__main__'. # Thực hiện một cái gì đó khác. # Thực hiện một số điều hữu ích Bạn cũng có thể sử dụng nó để cung cấp các chức năng/tiện ích trợ giúp có thể chạy được trên các gói và mô-đun mà không cần sử dụng phức tạp các thư viện

Ở đây, khi chúng tôi thực thi kịch bản. py trực tiếp biến __name__ sẽ là __main__. Vì vậy, mã trong khối if này[Block 2] sẽ chỉ chạy nếu mô-đun đó là điểm vào chương trình của bạn. Do đó, bạn có thể kiểm tra xem tập lệnh của mình đang được chạy trực tiếp hay được nhập bởi thứ gì khác bằng cách kiểm tra biến __name__

nếu __name__ == '__main__'. vượt qua nhưng điều này khiến bạn sử dụng mô-đun "chính" theo cách này. python my_package/my_package. py. Điều bạn có thể làm là tạo một __main__. pyfile và đặt mã "chính" của bạn ở đó. sau đó bạn có thể sử dụng gói như thể nó là một mô-đun giống như. python -m my_package Rõ ràng hơn và IMHO Pythonic hơn

nếu __name__ == '__main__'. main_function[] đôi khi được nhìn thấy, nhưng không tồn tại tên tiêu chuẩn cho hàm và vì các đối số được lấy từ sys. argv không thể chuyển các đối số cụ thể mà không thay đổi danh sách đối số mà tất cả các mô-đun khác nhìn thấy

Do những vấn đề này, chỉ khi đối số dòng lệnh -m [được giới thiệu bởi PEP 338] được sử dụng thì __name__ mới được đặt. Nếu không, ngữ nghĩa dự phòng của việc đặt __name__ thành "__main__" sẽ xảy ra. hệ thống. main sẽ vẫn được đặt thành giá trị phù hợp, bất kể __name__ được đặt thành gì

if __name__ == '__main__' est un un idiome qu’on voit souvent dans les scripts Python. A quoi sert-il ? . Quand on lance un script, tout le script est exécute dans tous les cas, et aucune fonction n’est appelée automatiquement

__name__ sẽ bằng. "__main__" khi tệp được thực thi từ dòng lệnh hoặc với python -m [để thực thi lệnh __main__ của gói. py] Tên của mô-đun, nếu mô-đun đang được nhập;

Các biến và phương thức đặc biệt của Python Python đi kèm với một số biến và phương thức đặc biệt có tên được đặt trước và theo sau là __. Trên thực tế, vì điều này, bạn không nên viết các biến của riêng mình bằng cách sử dụng mẫu này để không gây nhầm lẫn cho trình thông dịch Python

Không giống như các ngôn ngữ lập trình khác, python không được thiết kế để bắt đầu thực thi mã từ hàm chính một cách rõ ràng. Một biến đặc biệt gọi là __name__ cung cấp chức năng của hàm main. Vì nó là một biến dựng sẵn trong ngôn ngữ python nên chúng ta có thể viết chương trình chỉ để xem giá trị của biến này như sau

Python được gõ động, có nghĩa là bạn không phải khai báo kiểu của từng biến. Trong Python, các biến là một trình giữ chỗ lưu trữ cho các văn bản và số. Nó phải có tên để bạn có thể tìm lại nó. Biến luôn được gán dấu bằng, theo sau là giá trị của biến

Các biến kết nối thường được sử dụng để đặt các chi tiết cụ thể về cách thực hiện các hành động trên mục tiêu. Hầu hết chúng tương ứng với các plugin kết nối, nhưng không phải tất cả đều dành riêng cho chúng;

Một biến Python là một tên tượng trưng là một tham chiếu hoặc con trỏ tới một đối tượng. Khi một đối tượng được gán cho một biến, bạn có thể gọi đối tượng bằng tên đó. Nhưng bản thân dữ liệu vẫn được chứa trong đối tượng

Trình thông dịch python lưu giá trị biểu thức cuối cùng vào biến đặc biệt có tên là '_'. Tính năng này đã được sử dụng trong trình thông dịch CPython tiêu chuẩn trước tiên và bạn cũng có thể sử dụng nó trong các trình thông dịch Python khác

Tại sao nên sử dụng __ chính __ trong Python?

Trong Python, tên đặc biệt __main__ được sử dụng cho hai cấu trúc quan trọng. tên môi trường cấp cao nhất của chương trình , có thể kiểm tra bằng biểu thức __name__ == '__main__'; . __chính__. py trong các gói Python.

Tại sao tôi nhận được cú pháp không hợp lệ trong câu lệnh if của Python?

Trong mã Python trong một tệp, không thể có bất kỳ mã nào khác giữa if và other . Bạn sẽ thấy SyntaxError. cú pháp không hợp lệ nếu bạn cố gắng tự viết một câu lệnh khác hoặc đặt mã bổ sung giữa if và other trong tệp Python.

Nếu tên MAIN có nghĩa là gì trong Python?

Các tệp Python có thể hoạt động như các mô-đun có thể tái sử dụng hoặc dưới dạng các chương trình độc lập. nếu __name__ == “chính”. chỉ được sử dụng để thực thi một số mã nếu tệp được chạy trực tiếp và không được nhập .

Chủ Đề