Chuyển tới nội dung
Trang chủ » Handling Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’

Handling Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’

Attribute Error : module ‘collections’ has no attribute ‘Iterator’ | Django | Python | Flask  Error

Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’

AttributeError: Module ‘collections’ has no attribute ‘MutableMapping’

What is an Attribute Error?

An attribute error in Python occurs when a module or object does not have a specific attribute that is being accessed. This error typically arises when a piece of code tries to access or call an attribute or method that is not defined or available within the given module or object.

Understanding the ‘collections’ Module

In Python, the ‘collections’ module is a built-in module that provides a collection of container classes, such as deque, named tuple, and defaultdict, along with some abstract base classes. These container classes provide alternative implementations for the built-in data types and offer additional functionalities.

Introduction to Mutable Mapping

Mutable mapping is a term used in Python to describe objects that provide an interface for addition, deletion, and editing of key-value pairs. It allows the modification of the underlying data structure while retaining its association with the original reference. In simple terms, mutable mapping allows us to change the contents of a mapping object.

Exploring the ‘MutableMapping’ Class

The ‘MutableMapping’ class is a subclass of the ‘Mapping’ abstract base class defined in the ‘collections.abc’ module. It provides a basic implementation of a mutable mapping data structure. The class includes methods such as ‘__getitem__’, ‘__setitem__’, ‘__delitem__’, ‘__iter__’, and ‘__len__’, which can be overridden to customize behavior based on specific requirements.

Possible Causes for the Attribute Error

1. Incorrect Module Version: The ‘collections’ module has undergone changes and updates in different Python versions. If you encounter the AttributeError, it may be due to using an outdated Python version that does not include the ‘MutableMapping’ class.

2. Misspelled Attribute Name: Another common cause of the AttributeError is a typo or misspelling when trying to access the ‘MutableMapping’ class. Python is case-sensitive, so ensure that the attribute name is correctly capitalized as ‘MutableMapping’.

3. Missing or Incorrect Import Statement: If the ‘collections’ module or the ‘MutableMapping’ class is not imported correctly, the AttributeError can occur. Make sure to include the appropriate import statement at the beginning of your Python script or module.

How to Troubleshoot the Attribute Error

To troubleshoot the AttributeError related to the ‘collections’ module missing the ‘MutableMapping’ attribute, follow these steps:

1. Check Python Version: Verify that you are using a Python version that supports the ‘MutableMapping’ class. You can do this by running the following command in your Python shell or terminal:

“`
python –version
“`

2. Verify Import Statement: Double-check that you have imported the ‘collections’ module correctly. The import statement should be as follows:

“`
from collections import MutableMapping
“`

3. Check Attribute Name: Ensure that the attribute name is spelled correctly, including the correct capitalization. The correct attribute name, in this case, is ‘MutableMapping’.

Alternative Solutions for the Attribute Error

If you are still encountering the AttributeError, consider trying the following alternative solutions:

1. Change Python Version: If your current Python version does not support the ‘MutableMapping’ class, consider upgrading to a newer version or using a version that includes the required attribute.

2. Update ‘collections’ Module: It is possible that the ‘collections’ module needs updating. Ensure that your Python installation has the latest version of the module.

3. Verify External Dependencies: If you are using third-party packages or libraries that rely on the ‘MutableMapping’ class from the ‘collections’ module, ensure that all dependencies are installed correctly and up to date.

Conclusion

The AttributeError stating “module ‘collections’ has no attribute ‘MutableMapping'” typically occurs when trying to access the ‘MutableMapping’ class from the ‘collections’ module, but it is not available or defined. This can be due to various reasons such as incorrect Python version, misspelled attribute name, or incorrect import statement.

To troubleshoot this error, it is crucial to check the Python version, verify the import statement, and ensure the attribute name is correct. Additionally, alternative solutions such as changing the Python version or updating the ‘collections’ module may be necessary in some cases.

By following these troubleshooting steps and understanding the possible causes, you can effectively resolve the AttributeError and utilize the ‘MutableMapping’ class in your Python code.

FAQs

Q: Why do I get the AttributeError: ‘module’ object has no attribute ‘MutableMapping’?
A: This error occurs when the ‘MutableMapping’ class from the ‘collections’ module is not available or defined in the version of Python you are using.

Q: How can I resolve the AttributeError related to ‘MutableMapping’?
A: To resolve this error, check your Python version, verify the import statement, ensure correct attribute name spelling, and consider updating Python or the ‘collections’ module.

Q: Are there any alternative solutions for this AttributeError?
A: Yes, alternative solutions include changing the Python version, updating the ‘collections’ module, and verifying external dependencies that rely on ‘MutableMapping’.

Q: Can I use the ‘MutableMapping’ class in older Python versions?
A: ‘MutableMapping’ was introduced in Python 3.3. If you are using an older version, it may not be available. Consider upgrading to a newer version.

Q: Is there any difference between ‘MutableMapping’ and ‘Mapping’?
A: Yes, ‘MutableMapping’ is a subclass of ‘Mapping’. ‘MutableMapping’ provides methods such as ‘__getitem__’, ‘__setitem__’, and ‘__delitem__’ to allow modifications, while ‘Mapping’ provides a read-only interface.

Attribute Error : Module ‘Collections’ Has No Attribute ‘Iterator’ | Django | Python | Flask Error

Keywords searched by users: attributeerror: module ‘collections’ has no attribute ‘mutablemapping’ TypeError cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError, Pyrebase, Cannot import name mutableset from collections, importerror: cannot import name ‘mapping’ from ‘collections’, Importerror cannot import name mutablemapping from collections odoo, Cannot import name ‘Container’ from ‘collections, Pip install collections, Change Python version

Categories: Top 24 Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’

See more here: nhanvietluanvan.com

Typeerror Cannot Set ‘Is_Timeout’ Attribute Of Immutable Type ‘Timeouterror

TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’

Python is a versatile programming language that allows developers to build robust applications and handle various errors. However, like any other programming language, errors can occur during the execution of Python code. One such error is the “TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’.” This error typically occurs when attempting to modify an attribute that is not meant to be changed.

In this article, we will delve into the details of this error, understand its causes, and explore potential solutions. Additionally, we will provide a FAQ section to address common questions related to this error.

Understanding the TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’:

To comprehend this error, it is essential to have a basic knowledge of Python exceptions and their hierarchy. In Python, exceptions are represented as classes, with the ‘TimeoutError’ class being used to handle timeout-related errors. This specific error occurs when attempting to modify the ‘is_timeout’ attribute of the ‘TimeoutError’ class, even though it is an immutable type.

Simply put, an immutable type in Python refers to an object whose state cannot be modified after it is created. In the case of the ‘TimeoutError’ class, the ‘is_timeout’ attribute cannot be changed once the instance is created.

Causes of the TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’:

One common cause of this error is attempting to modify an immutable attribute of the ‘TimeoutError’ class. Typically, this occurs when developers mistakenly assume that all attributes are mutable or overlook the immutability of specific attributes.

Here’s an example that triggers this error:

“`python
# Creating an instance of the TimeoutError class
err = TimeoutError(“Connection timed out”)

# Trying to modify the ‘is_timeout’ attribute
err.is_timeout = True # Generates the error
“`

In this example, the ‘TimeoutError’ instance ‘err’ is created with the error message “Connection timed out.” However, when trying to modify the ‘is_timeout’ attribute by assigning it a Boolean value of ‘True,’ the ‘TypeError’ is raised.

Resolving the TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’:

To resolve this error, it is crucial to understand the concept of immutability in Python and work within its limitations. Here are a few potential solutions:

1. Avoid modifying immutable attributes: As the ‘is_timeout’ attribute of the ‘TimeoutError’ class is immutable, it cannot be directly modified. Therefore, it is essential to design your code in a way that does not attempt to modify these attributes. Instead, focus on catching and handling the error appropriately without modifying the immutable attributes.

2. Create a custom class: If you need to modify the ‘is_timeout’ attribute or add additional mutable attributes to the ‘TimeoutError’ class, you can create a custom exception class that inherits from ‘TimeoutError’ and redefine the necessary attributes. This way, you have more control over the attributes and can modify them as required.

Using the example from above, here’s how you can create a custom class to modify the ‘is_timeout’ attribute:

“`python
class CustomTimeoutError(TimeoutError):
def __init__(self, message, is_timeout):
super().__init__(message)
self.is_timeout = is_timeout

# Creating an instance of the custom class
err = CustomTimeoutError(“Connection timed out”, True) # No error occurs
“`

In this code snippet, a custom class named ‘CustomTimeoutError’ is created, inheriting from ‘TimeoutError.’ The ‘is_timeout’ attribute is explicitly defined, allowing it to be modified.

FAQs about TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’:

Q1. What is an immutable object in Python?
A1. In Python, an immutable object is an object whose state cannot be altered after it is created. Immutable objects include tuples, strings, and numbers like integers and floats. Once created, these objects cannot be modified directly.

Q2. Why is the ‘is_timeout’ attribute immutable in the ‘TimeoutError’ class?
A2. The ‘is_timeout’ attribute of the ‘TimeoutError’ class is likely made immutable to ensure the consistency and integrity of the error handling mechanism. By preventing direct modifications to this attribute, it avoids unintended consequences and provides a consistent behavior for timeout errors.

Q3. Are all attributes of the ‘TimeoutError’ class immutable?
A3. No, not all attributes of the ‘TimeoutError’ class are immutable. It is essential to check the documentation or code implementation of the class to determine which attributes can be modified.

Q4. Does modifying the ‘is_timeout’ attribute affect the functionality of the ‘TimeoutError’ class?
A4. No, modifying the ‘is_timeout’ attribute does not affect the underlying functionality of the ‘TimeoutError’ class. The ‘is_timeout’ attribute is typically used to determine whether an error is due to a timeout or some other cause. Modifying it might alter the accuracy of the error classification.

In conclusion, the ‘TypeError: cannot set ‘is_timeout’ attribute of immutable type ‘TimeoutError’ error occurs when attempting to modify an immutable attribute. Understanding the nature of immutability and working within its limitations is crucial to prevent this error. By avoiding direct modifications to immutable attributes or defining custom exception classes, developers can effectively handle timeout-related errors without encountering this issue.

Pyrebase

Pyrebase: Simplifying Firebase Integration for Python Developers

Firebase is a powerful and versatile platform provided by Google, offering a plethora of tools for developing and deploying web and mobile applications. However, integrating Firebase with Python applications has historically involved some complexities. Enter Pyrebase, a Python library that aims to simplify the process of working with Firebase, allowing developers to harness its full potential effortlessly. In this article, we will explore Pyrebase in depth, covering its features, benefits, and how to get started with this ingenious library.

What is Pyrebase?

Pyrebase is an open-source Python library that serves as a Firebase SDK (Software Development Kit). It acts as a convenient wrapper around the Firebase API, providing Python developers with a simplified interface to interact with Firebase services. Created by the talented team at Platypus Technologies, Pyrebase offers seamless integration with Firebase Realtime Database, Authentication, Storage, and Cloud Messaging, among other services.

Key Features of Pyrebase

1. Firebase Realtime Database: Pyrebase allows developers to interact with Firebase’s powerful NoSQL cloud-based database. It provides straightforward methods to read, write, update, and delete data, as well as listen for real-time updates. This makes it incredibly easy to build dynamic applications that react to changes in data.

2. Firebase Authentication: Managing user authentication is a breeze with Pyrebase. It offers methods for user registration, login, and logout, as well as verifying user credentials. This enables developers to implement secure and personalized user experiences quickly.

3. Firebase Storage: Pyrebase allows seamless integration with Firebase’s Cloud Storage service. It provides functions to upload and download files, as well as manage file metadata. This is particularly useful when working with media files in applications.

4. Firebase Cloud Messaging: With Pyrebase, sending push notifications to users becomes effortless. Developers can easily target specific devices or user segments and send personalized notifications, enhancing engagement and user interaction.

Benefits of Pyrebase

1. Simplified Integration: Pyrebase significantly simplifies the process of integrating Firebase services into Python applications. With its intuitive and developer-friendly interface, the library abstracts away much of the complexities involved in configuring and interacting with Firebase.

2. Fast Development: By providing a Pythonic interface, Pyrebase enables developers to leverage their Python skills and build Firebase-powered applications quickly. Its clean and concise code syntax allows for rapid prototyping and development iterations.

3. Reduced Boilerplate Code: Pyrebase eliminates a considerable amount of boilerplate code that would otherwise be required when directly using the Firebase API. This allows developers to focus more on their application’s logic and functionality, resulting in cleaner and more maintainable codebases.

Getting Started with Pyrebase

To get started with Pyrebase, you’ll need to install it. You can do this easily using pip, Python’s package manager, with the following command:

“`
pip install pyrebase
“`

Once installed, you’ll need to import the library into your Python script using the following line:

“`python
import pyrebase
“`

To initialize Pyrebase, you’ll need to create a configuration object that holds your Firebase project’s credentials. This can be done with the following code snippet:

“`python
config = {
“apiKey”: “YOUR_API_KEY”,
“authDomain”: “YOUR_AUTH_DOMAIN”,
“databaseURL”: “YOUR_DATABASE_URL”,
“storageBucket”: “YOUR_STORAGE_BUCKET”
}

firebase = pyrebase.initialize_app(config)
“`

From there, you can access the various Firebase services through the initialized `firebase` object and benefit from Pyrebase’s simplified interface.

FAQs (Frequently Asked Questions):

Q: Is Pyrebase officially maintained by Google?
A: No, Pyrebase is an open-source library developed by Platypus Technologies. However, it provides full compatibility with Firebase services and enjoys a large and active community of contributors.

Q: Can Pyrebase be used with other programming languages?
A: Pyrebase is designed specifically for Python, as it acts as a Python SDK for Firebase. It leverages Python’s simplicity and elegance to provide an intuitive interface for Firebase integration.

Q: Is Pyrebase suitable for large-scale projects?
A: Absolutely! Pyrebase is built to handle projects of any scale. It abstracts away complexity and allows developers to focus on their application’s logic, making it suitable for both small applications and enterprise-level solutions.

Q: Are there any limitations to using Pyrebase?
A: Pyrebase is a reliable library with extensive functionality. However, it’s important to note that it is not officially supported by Google, the provider of Firebase. While the library is actively maintained, it’s important to keep an eye on updates and ensure compatibility with the latest Firebase features.

In conclusion, Pyrebase simplifies Firebase integration for Python developers, providing a Pythonic interface to interact with Firebase services effortlessly. Its intuitive features, ease of use, and reduced boilerplate code make it a valuable tool for building dynamic web and mobile applications. By abstracting away complexities, Pyrebase enables developers to leverage their Python skills and harness the power of Firebase to its fullest potential. Whether you’re a beginner or an experienced Python developer, Pyrebase is certainly worth exploring for your next Firebase project.

Cannot Import Name Mutableset From Collections

Cannot Import Name MutableSet from Collections

Python is an incredibly powerful and versatile programming language that offers a wide range of modules and libraries to make programming tasks easier and more efficient. One such module is the collections module, which provides additional data structures beyond the standard ones available in Python.

However, there might be instances when attempting to import certain elements from the collections module can lead to unexpected errors. One such error is the “ImportError: cannot import name ‘MutableSet’ from ‘collections'” error. In this article, we will delve into the details of this error, explore its causes, and discuss possible solutions.

Understanding the Error:

The “ImportError: cannot import name ‘MutableSet’ from ‘collections'” error is encountered when trying to import the MutableSet class from the collections module. This error typically occurs because the MutableSet class is not available in the version of Python you are using.

The MutableSet class was added to the collections module in Python 3.9. If you are using an earlier version of Python, such as Python 3.8 or below, this class will not be available. Therefore, attempting to import it will result in the “cannot import name ‘MutableSet'” error.

Possible Solutions:

1. Update Python Version: The simplest solution to resolve this error is to update your Python version to 3.9 or above. Python is an open-source language, and new versions are released regularly with added features and bug fixes. Updating to the latest version ensures that you have access to all the functionalities and classes available in the collections module.

2. Use Alternative Data Structures: If updating the Python version is not an option or does not fit your project requirements, you can consider using alternative data structures. While the MutableSet class provides unique functionalities, you can achieve similar operations using other data structures available in Python, such as lists, sets, or custom data structures implemented using dictionaries.

3. Import Specific Data Structures: If you only require specific data structures from the collections module other than MutableSet, you can import them individually without importing MutableSet itself. For example, if you just need the Counter class, you can import it directly using “from collections import Counter”.

FAQs:

Q1: Why am I encountering the “ImportError: cannot import name ‘MutableSet’ from ‘collections'” error?
A1: This error occurs because the MutableSet class is not available in the Python version you are using. It was introduced in Python 3.9, so if you are using an earlier version, you’ll encounter this error.

Q2: How can I fix the “cannot import name ‘MutableSet'” error?
A2: The most straightforward solution is to update your Python version to 3.9 or above. Alternatively, you can use alternative data structures or import specific data structures from the collections module instead.

Q3: Can I achieve similar functionality as MutableSet using other data structures?
A3: Yes, you can achieve similar functionality using other data structures available in Python, such as lists, sets, or custom data structures implemented using dictionaries. While the syntax and operations may differ, you can still perform similar operations.

Q4: Are there any downsides to updating my Python version?
A4: Updating Python versions may introduce minor compatibility issues with existing codebases, as some changes could break previously written code. It is essential to thoroughly test your code after updating the Python version to ensure compatibility and detect any potential issues.

Q5: Are there any alternatives to the collections module?
A5: While the collections module offers additional data structures, there are also other third-party libraries available that provide similar functionalities. Some popular ones include numpy and pandas, which offer more advanced data manipulation and analysis capabilities.

In conclusion, the “ImportError: cannot import name ‘MutableSet’ from ‘collections'” error occurs when attempting to import the MutableSet class from the collections module. This error arises because the class is only available in Python 3.9 and above. To resolve this error, you can update your Python version, use alternative data structures, or import specific data structures from the collections module. Always consider your project’s requirements and compatibility when implementing these solutions.

Images related to the topic attributeerror: module ‘collections’ has no attribute ‘mutablemapping’

Attribute Error : module ‘collections’ has no attribute ‘Iterator’ | Django | Python | Flask  Error
Attribute Error : module ‘collections’ has no attribute ‘Iterator’ | Django | Python | Flask Error

Found 31 images related to attributeerror: module ‘collections’ has no attribute ‘mutablemapping’ theme

Solved] - Attributeerror: Module 'Collections' Has No Attribute ' Mutablemapping' - Dronekit-Python | Elucidate Drones
Solved] – Attributeerror: Module ‘Collections’ Has No Attribute ‘ Mutablemapping’ – Dronekit-Python | Elucidate Drones
Attributeerror: Module Collections Has No Attribute Mutablemapping
Attributeerror: Module Collections Has No Attribute Mutablemapping
Module 'Collections' Has No Attribute 'Mutablemapping' [Solved]
Module ‘Collections’ Has No Attribute ‘Mutablemapping’ [Solved]
Solved] - Attributeerror: Module 'Collections' Has No Attribute ' Mutablemapping' - Dronekit-Python | Elucidate Drones
Solved] – Attributeerror: Module ‘Collections’ Has No Attribute ‘ Mutablemapping’ – Dronekit-Python | Elucidate Drones
Jupyter Notebook Attribute Error: Module 'Collections' Has No Attribute ' Mutablemapping' - Stack Overflow
Jupyter Notebook Attribute Error: Module ‘Collections’ Has No Attribute ‘ Mutablemapping’ – Stack Overflow
Python Module Collections Has No Attribute 'Mutablemapping' | Sebhastian
Python Module Collections Has No Attribute ‘Mutablemapping’ | Sebhastian
Python Error: Class Requestscookiejar(Cookielib.Cookiejar, Collections. Mutablemapping): - In File Cookies.Py - Stack Overflow
Python Error: Class Requestscookiejar(Cookielib.Cookiejar, Collections. Mutablemapping): – In File Cookies.Py – Stack Overflow
Solved] - Attributeerror: Module 'Collections' Has No Attribute ' Mutablemapping' - Dronekit-Python | Elucidate Drones
Solved] – Attributeerror: Module ‘Collections’ Has No Attribute ‘ Mutablemapping’ – Dronekit-Python | Elucidate Drones
关于【Attributeerror: Module 'Collections' Has No Attribute  'Mapping'】出现的问题_Szetozeze的博客-Csdn博客
关于【Attributeerror: Module ‘Collections’ Has No Attribute ‘Mapping’】出现的问题_Szetozeze的博客-Csdn博客
Jupyter Notebook] Valueerror: If Using All Scalar Values, You Must Pass An  Index
Jupyter Notebook] Valueerror: If Using All Scalar Values, You Must Pass An Index
Attributeerror: Module 'Collections' Has No Attribute 'Mutablemapping' -  Zbzsh - 博客园
Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’ – Zbzsh – 博客园
Python Module Collections Has No Attribute 'Mutablemapping' | Sebhastian
Python Module Collections Has No Attribute ‘Mutablemapping’ | Sebhastian
Pip3 Broken: Attributeerror: Module 'Collections' Has No Attribute ... :  R/Learnpython
Pip3 Broken: Attributeerror: Module ‘Collections’ Has No Attribute … : R/Learnpython
Attributeerror: Module 'Collections' Has No Attribute 'Mutablemapping '_愿此后再无Wa的博客-Csdn博客
Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping ‘_愿此后再无Wa的博客-Csdn博客
Module 'Collections' Has No Attribute 'Mutablemapping' [Solved]
Module ‘Collections’ Has No Attribute ‘Mutablemapping’ [Solved]
Attributeerror: Module 'Collections' Has No Attribute 'Mutablemapping' ·  Issue #10253 · Pymedusa/Medusa · Github
Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping’ · Issue #10253 · Pymedusa/Medusa · Github
Attributeerror: Module 'Collections' Has No Attribute 'Mutablemapping '_愿此后再无Wa的博客-Csdn博客
Attributeerror: Module ‘Collections’ Has No Attribute ‘Mutablemapping ‘_愿此后再无Wa的博客-Csdn博客
Pip Is Not Working Fine On Python 3.9 And Newer - Python Help - Discussions  On Python.Org
Pip Is Not Working Fine On Python 3.9 And Newer – Python Help – Discussions On Python.Org
Elucidate Drones
Elucidate Drones
问题解决Attributeerror: Module 'Google.Protobuf.Internal.Containers' Has No  Attribute 'Mutablemapping'_隐形的翅膀_Xxz的博客-Csdn博客
问题解决Attributeerror: Module ‘Google.Protobuf.Internal.Containers’ Has No Attribute ‘Mutablemapping’_隐形的翅膀_Xxz的博客-Csdn博客
Module 'Collections' Has No Attribute 'Mutablemapping' [Solved]
Module ‘Collections’ Has No Attribute ‘Mutablemapping’ [Solved]
Getting Shotgrid Working With Blender 3.0? - Pipeline Integrations -  Community @ Shotgrid
Getting Shotgrid Working With Blender 3.0? – Pipeline Integrations – Community @ Shotgrid
Python3.11的版本,运行Django项目报错Attributeerror: Module 'Collections' Has No  Attribute 'Iterator'_Deng872347348的博客-Csdn博客
Python3.11的版本,运行Django项目报错Attributeerror: Module ‘Collections’ Has No Attribute ‘Iterator’_Deng872347348的博客-Csdn博客
Attributeerror: Module 'Selenium.Webdriver' Has No Attribute 'Opera'
Attributeerror: Module ‘Selenium.Webdriver’ Has No Attribute ‘Opera’

Article link: attributeerror: module ‘collections’ has no attribute ‘mutablemapping’.

Learn more about the topic attributeerror: module ‘collections’ has no attribute ‘mutablemapping’.

See more: nhanvietluanvan.com/luat-hoc

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *