46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Relationships between * and args | ||
|  | --- | ||
|  | ## Presence of * in function definition
 | ||
|  | 
 | ||
|  | ```Python | ||
|  | # How does *args work in a function definition
 | ||
|  | 
 | ||
|  | def hardFunc(arg1, arg2): | ||
|  |     # create a tuple and pollute it with arguments passed to hardFunc | ||
|  |     args=(arg1, arg2) | ||
|  |     # print out results | ||
|  |     print(args[0]) | ||
|  |     print(args[1]) | ||
|  | 
 | ||
|  | hardFunc('hard_one', 'hard_two') | ||
|  | # output — Try it yourself now and in sequential snippets!
 | ||
|  | 
 | ||
|  | def softFunc(*args): | ||
|  |     # at this point after calling softFunc a tuple with a name of a word | ||
|  |     # followed by * is created automatically (in this case the name is args) | ||
|  |     # print out results | ||
|  |     print(args[0]) | ||
|  |     print(args[1]) | ||
|  | 
 | ||
|  | softFunc('soft_one', 'soft_two') | ||
|  | 
 | ||
|  | # Now try to do something illegal
 | ||
|  | hardFunc('one', 'two', 'three') | ||
|  | 
 | ||
|  | # Now do things legally
 | ||
|  | softFunc('one', 'two', 'three') | ||
|  | 
 | ||
|  | # or even
 | ||
|  | softFunc('one', 'two', 'three', 'infinity') | ||
|  | 
 | ||
|  | # softFunc handles arbitrary amount of arguments easily by virtue of * syntax
 | ||
|  | # So using a single variable name in conjuction with * we gained the ability
 | ||
|  | # to invoke a function with arbitrary amount of arguments.
 | ||
|  | 
 | ||
|  | # Once again when softFunc is called the newly args
 | ||
|  | # tuple filled with provided arguments is created
 | ||
|  | 
 | ||
|  | # Conclusion softFunc is a more flexible/dynamic verson of a hardFunc
 | ||
|  | ``` |