Hướng dẫn why is python dynamically typed? - tại sao python được gõ động?

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận
    When we declare a variable in C or alike languages, this sets aside an area of memory for holding values allowed by the data type of the variable. The memory allocated will be interpreted as the data type suggests. If it’s an integer variable the memory allocated will be read as an integer and so on. When we assign or initialize it with some value, that value will get stored at that memory location. At compile time, initial value or assigned value will be checked. So we cannot mix types. Example: initializing a string value to an int variable is not allowed and the program will not compile.

    Bài tập biến Python khác với một số ngôn ngữ phổ biến như C, C ++ và Java. Không có tuyên bố về một biến, chỉ là một tuyên bố gán.dynamically typed language. It doesn’t know about the type of the variable until the code is run. So declaration is of no use. What it does is, It stores that value at some memory location and then binds that variable name to that memory container. And makes the contents of the container accessible through that variable name. So the data type does not matter. As it will get to know the type of the value at run-time.

    Hãy để chúng tôi xem lý do tại sao? Khi chúng tôi khai báo một biến bằng các ngôn ngữ C hoặc giống nhau, điều này đặt một khu vực bộ nhớ để giữ các giá trị được phép bởi loại dữ liệu của biến. Bộ nhớ được phân bổ sẽ được giải thích như kiểu dữ liệu gợi ý. Nếu nó có một biến số nguyên thì bộ nhớ được phân bổ sẽ được đọc dưới dạng số nguyên, v.v. Khi chúng tôi gán hoặc khởi tạo nó với một số giá trị, giá trị đó sẽ được lưu trữ tại vị trí bộ nhớ đó. Tại thời điểm biên dịch, giá trị ban đầu hoặc giá trị được gán sẽ được kiểm tra. Vì vậy, chúng tôi không thể trộn các loại. Ví dụ: Khởi tạo giá trị chuỗi thành biến INT không được phép và chương trình sẽ không biên dịch.

    print(type(x))

    Nhưng Python là một ngôn ngữ được đánh máy động. Nó không biết về loại biến cho đến khi mã được chạy. Vì vậy, tuyên bố không có ích. Những gì nó làm là, nó lưu trữ giá trị đó tại một số vị trí bộ nhớ và sau đó liên kết tên biến đó với thùng chứa bộ nhớ đó. Và làm cho nội dung của container có thể truy cập thông qua tên biến đó. Vì vậy, loại dữ liệu không quan trọng. Vì nó sẽ biết loại giá trị trong thời gian chạy.

    print(type(x))

    Output:

    
    
    


    Vâng, đúng vậy. Python là một ngôn ngữ được đánh máy động. Năng động là gì? Chúng tôi không phải khai báo loại biến trong khi gán giá trị cho một biến trong Python. Các ngôn ngữ khác như C, C ++, Java, v.v., có một tuyên bố nghiêm ngặt các biến trước khi gán các giá trị cho chúng.

    Python không có bất kỳ vấn đề nào ngay cả khi chúng tôi không khai báo loại biến. Nó nói rằng loại biến trong thời gian chạy của chương trình. Vì vậy, Python là một ngôn ngữ được đánh máy động. Hãy xem một ví dụ.

    Thí dụ

    & nbsp; bản demo trực tiếp

    ## assigning a value to a variable
    x = [1, 2, 3]
    ## x is a list here
    print(type(x))
    ## reassigning a value to the 'x'
    x = True
    ## x is a bool here
    print(type(x))

    Nếu bạn chạy chương trình trên, nó sẽ tạo ra các kết quả sau.

    Đầu ra

    
    

    Hướng dẫn why is python dynamically typed? - tại sao python được gõ động?

    Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26

    • Câu hỏi và câu trả lời liên quan
    • Tại sao Python được gọi là gõ động?
    • Số lượng lớn nhất trong một mảng được gõ động trong JavaScript
    • Sự khác biệt giữa các ngôn ngữ lập trình của UNTED và các ngôn ngữ lập trình được gõ một cách tự động là gì?
    • JavaScript gõ mảng
    • Python có phải là ngôn ngữ kịch bản không?
    • Có một mảng được đánh máy boolean trong JavaScript không?
    • Kiểm tra xem một chuỗi là tên được đánh tên của tên đã cho trong Python
    • Làm thế nào tôi có thể tự động nhập mô -đun Python?
    • Làm thế nào để tự động tải một lớp Python?
    • Tìm các số chẵn và số lẻ trong một tập hợp các phần tử sử dụng ngôn ngữ C
    • Ngôn ngữ lập trình là gì?
    • Chương trình tìm tất cả các chuỗi có thể được gõ bằng bàn phím điện thoại trong Python
    • Làm thế nào chúng ta có thể khởi tạo các lớp Python khác nhau một cách linh hoạt?
    • Chương trình để kiểm tra chuỗi gõ là để viết chuỗi mục tiêu trong các phím bàn phím bị kẹt hoặc không trong Python
    • Ngôn ngữ JavaScript cốt lõi là gì?

    Xem: Mười điều mọi người muốn biết về Python để biết thêm chi tiết.Ten things people want to know about Python for more details.

    Câu trả lời
    • Mọi người thường sử dụng thuật ngữ ngôn ngữ được đánh game mạnh mẽ để chỉ một ngôn ngữ được gõ một cách thống kê (các loại được liên kết với một khai báo biến-hay nói chung hơn, trình biên dịch có thể cho biết loại biến A nào được đề cập, ví dụ như thông qua suy luận loại , mà không thực hiện chương trình) và gõ mạnh (hạn chế về cách các loại có thể được xen kẽ). Vì vậy, nếu bạn nhìn vào việc gõ động và gõ mạnh như các khái niệm trực giao, Python có thể được đánh máy linh hoạt và mạnh mẽ.

    Một câu trả lời khác:

    • Python được gõ mạnh khi trình thông dịch theo dõi tất cả các loại biến. Nó cũng rất năng động vì nó hiếm khi sử dụng những gì nó biết để hạn chế sử dụng biến. Trong Python, trách nhiệm của chương trình là sử dụng các hàm tích hợp như isInstance () và assubClass () để kiểm tra các loại biến và sử dụng chính xác. Python cố gắng tránh xa bạn trong khi cung cấp cho bạn tất cả những gì bạn cần để thực hiện kiểm tra loại mạnh.

    Và một cái khác:

    • Trong một ngôn ngữ được đánh máy yếu, một trình biên dịch / trình thông dịch đôi khi sẽ thay đổi loại biến. Ví dụ: trong một số ngôn ngữ (như javascript), bạn có thể thêm chuỗi vào số 'x' & nbsp;+& nbsp; 3 trở thành 'x3'. Đây có thể là một vấn đề bởi vì nếu bạn đã phạm sai lầm trong chương trình của mình, thay vì thực hiện ngoại lệ sẽ tiếp tục nhưng các biến của bạn giờ đây có các giá trị sai và bất ngờ. Trong một ngôn ngữ được gõ mạnh (như Python), bạn không thể thực hiện các hoạt động không phù hợp với loại đối tượng - cố gắng thêm số vào chuỗi sẽ thất bại. Các vấn đề như thế này dễ chẩn đoán hơn vì ngoại lệ được nêu ra tại điểm xảy ra lỗi thay vì ở một số nơi khác, có khả năng bị loại bỏ, địa điểm.

    • Trong một ngôn ngữ được gõ tĩnh, loại biến phải được biết đến (và thường được khai báo) tại điểm mà nó được sử dụng. Cố gắng sử dụng nó sẽ là một lỗi. Trong một ngôn ngữ được đánh máy động, các đối tượng vẫn có một loại, nhưng nó được xác định trong thời gian chạy. Bạn được tự do liên kết tên (biến) với các đối tượng khác nhau với một loại khác nhau. Miễn là bạn chỉ thực hiện các hoạt động hợp lệ cho loại phiên dịch không quan tâm loại chúng thực sự là gì.

    Và khác:

    • Trong một ngôn ngữ được đánh máy mạnh mẽ, bạn chỉ đơn giản là không được phép làm bất cứ điều gì không tương thích với loại dữ liệu bạn đang làm việc. Ví dụ: bằng ngôn ngữ được đánh máy yếu, bạn thường có thể thực hiện 3 & nbsp;+& nbsp; 5 & nbsp;+& nbsp; 7 và nhận kết quả 15, vì có thể thêm số; Tương tự, bạn thường có thể thực hiện 'Xin chào' & nbsp;+& nbsp; 'và' & nbsp; Nhưng trong một ngôn ngữ được gõ mạnh, bạn không thể thực hiện 'Xin chào' & nbsp;+& nbsp; 5 & nbsp; Trong một ngôn ngữ được đánh máy yếu, trình biên dịch hoặc trình thông dịch có thể thực hiện chuyển đổi hậu trường để làm cho các loại hoạt động này hoạt động; Ví dụ: một ngôn ngữ được đánh máy yếu có thể cung cấp cho bạn chuỗi "Hello5Goodbye" do kết quả cho 'Hello' & nbsp;+& nbsp; 5 & nbsp;+& nbsp; 'Goodbye'. Ưu điểm của một ngôn ngữ được đánh máy mạnh là bạn có thể tin tưởng những gì đang diễn ra: nếu bạn làm điều gì đó sai, chương trình của bạn sẽ tạo ra một lỗi loại cho bạn biết bạn đã sai ở đâu và bạn không phải ghi nhớ nhiều loại arcane- Quy tắc chuyển đổi hoặc cố gắng gỡ lỗi một tình huống mà các biến của bạn đã được thay đổi âm thầm mà không có kiến ​​thức của bạn.can't do 'Hello' + 5 + 'Goodbye', because there's no defined way to "add" strings and numbers to each other. In a weakly typed language, the compiler or interpreter can perform behind-the-scenes conversions to make these types of operations work; for example, a weakly typed language might give you the string "Hello5Goodbye" as a result for 'Hello' + 5 + 'Goodbye'. The advantage to a strongly typed language is that you can trust what's going on: if you do something wrong, your program will generate a type error telling you where you went wrong, and you don't have to memorize a lot of arcane type-conversion rules or try to debug a situation where your variables have been silently changed without your knowledge.

    • Trong một ngôn ngữ được đánh máy động, một biến chỉ đơn giản là một giá trị bị ràng buộc với một tên; Giá trị có một loại - như "Integer" hoặc "chuỗi" hoặc "danh sách" - nhưng bản thân biến thì không. Bạn có thể có một biến, ngay bây giờ, giữ một số và sau đó gán một chuỗi cho nó nếu bạn cần thay đổi. Trong một ngôn ngữ được đánh máy tĩnh, bản thân biến có một loại; Nếu bạn có một biến là một số nguyên, bạn sẽ không thể gán bất kỳ loại giá trị nào khác cho nó sau này. Một số ngôn ngữ được gõ tĩnh yêu cầu bạn viết ra các loại của tất cả các biến của bạn, trong khi các ngôn ngữ khác sẽ tự động suy luận cho bạn cho bạn. Một ngôn ngữ được gõ tĩnh có thể bắt được một số lỗi trong chương trình của bạn trước khi nó chạy, bằng cách phân tích các loại biến của bạn và cách chúng được sử dụng. Một ngôn ngữ tự động không nhất thiết phải làm điều này, nhưng nhìn chung bạn sẽ viết các bài kiểm tra đơn vị cho mã của mình (vì lỗi loại là một phần nhỏ của tất cả các điều có thể sai trong một chương trình); Do đó, các lập trình viên trong các ngôn ngữ động dựa vào các bộ thử nghiệm của họ để bắt những lỗi này và tất cả các lỗi khác, thay vì sử dụng trình biên dịch kiểm tra loại chuyên dụng.

    Ví dụ thực tế:

    Tác giả này (SkipMontanaro) được sử dụng để vận hành trang web Lịch hòa nhạc hiện không còn tồn tại. Phần phụ trợ đã được triển khai trong Python, nhưng mặt trước đã được triển khai trong Mason, một nền tảng ứng dụng web dựa trên Perl. Một lỗi mất một lúc để tìm ra là lý do tại sao nhập ngày hòa nhạc cho ban nhạc "311" không thành công. Python đã nhìn thấy một int thay vì một chuỗi. Nó hóa ra ở đâu đó trong mặt tiền Perl hoặc Mason "311" đã được chuyển đổi thành một số nguyên.

    Tại sao Python là một ngôn ngữ năng động và cũng là một ngôn ngữ được đánh máy mạnh mẽ (được chỉnh sửa lần cuối 2012-02-24 13:34:06 bởi 87-119-185-195)87-119-185-195)

    Tại sao các ngôn ngữ được gõ động được sử dụng?

    Ưu điểm của các ngôn ngữ được xy bằng động: sự vắng mặt của một bước biên dịch riêng (điều này phổ biến hơn nhiều) có nghĩa là bạn không phải chờ trình biên dịch hoàn thành trước khi bạn có thể kiểm tra các thay đổi mà bạn đã thực hiện với mã của mình. Điều này làm cho chu kỳ gỡ lỗi ngắn hơn và ít cồng kềnh hơn.The absence of a separate compilation step (which is much more common) means that you don't have to wait for the compiler to finish before you can test changes that you've made to your code. This makes the debug cycle much shorter and less cumbersome.

    Tại sao Python được coi là gõ mạnh?

    Python được gõ mạnh khi trình thông dịch theo dõi tất cả các loại biến.Nó cũng rất năng động vì nó hiếm khi sử dụng những gì nó biết để hạn chế sử dụng biến.Trong Python, trách nhiệm của chương trình là sử dụng các hàm tích hợp như isInstance () và assubClass () để kiểm tra các loại biến và sử dụng chính xác.the interpreter keeps track of all variables types. It's also very dynamic as it rarely uses what it knows to limit variable usage. In Python, it's the program's responsibility to use built-in functions like isinstance() and issubclass() to test variable types and correct usage.

    Tại sao Python là ràng buộc động?

    Nhưng Python là một ngôn ngữ được đánh máy động.Nó không biết về loại biến cho đến khi mã được chạy.Vì vậy, tuyên bố không có ích.Những gì nó làm là, nó lưu trữ giá trị đó tại một số vị trí bộ nhớ và sau đó liên kết tên biến đó với thùng chứa bộ nhớ đó.It stores that value at some memory location and then binds that variable name to that memory container.

    Tại sao Python tĩnh không năng động?

    Python là một ngôn ngữ được đánh máy động, có nghĩa là kiểm tra biến được thực hiện trong thời gian chạy.Trong khi đó trong ngôn ngữ được đánh máy tĩnh, việc kiểm tra các biến hoặc bất kỳ ngôn ngữ nào khác được thực hiện tại thời điểm biên dịch.checking of the variable is done at the runtime. Whereas in the Statically typed language the checking of the variables or any other is done at the compile time.