<jupyter_start><jupyter_text>**Kwargs Python passes a variable-length non-keyword argument to a function using *args but we cannot use this to pass the keyword argument. For this problem, Python has got a solution called **kwargs, it allows us to pass the variable length of keyword arguments to the function.In the function, we use the double-asterisk ** before the parameter name to denote this type of argument. The arguments are passed as a dictionary and these arguments make a dictionary inside a function with name same as the parameter excluding double asterisk **.<jupyter_code>def intro(**data):
    print("\nData type of argument:",type(data))

    for key, value in data.items():
        print("{} is {}".format(key,value))
intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890)
intro(Firstname="John", Lastname="Wood", Email="<EMAIL>", Country="Wakanda", Age=25, Phone=9876543210)<jupyter_output>Data type of argument: <class 'dict'>
Firstname is John
Lastname is Wood
Email is <EMAIL>
Country is Wakanda
Age is 25
Phone is 9876543210
{'fraction_non_alphanumeric': 0.09519321394910461, 'fraction_numerical': 0.033930254476908575, 'mean_word_length': 5.555555555555555, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '231526', 'license': 'MIT', 'n_tokens_mistral': 322, 'n_tokens_neox': 289, 'n_words': 135, 'path': 'AdvanceTopics/AsteriskAsteriskKwargs.ipynb', 'repo_name': 'cusey/PythonExamples', 'size': '1085'}