mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	bpo-22057: Clarify eval() documentation (GH-8812)
If a globals dictionary without a '__builtins__' key is passed to
eval(), a '__builtins__' key will be inserted to the dictionary:
    >>> eval("print('__builtins__' in globals())", {})
    True
(As a result of this behavior, we can use the builtins
print() and globals() even if we passed a dictionary without a
'__builtins__' key to eval().)
			
			
This commit is contained in:
		
							parent
							
								
									77d5781835
								
							
						
					
					
						commit
						225b055480
					
				
					 1 changed files with 4 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -435,8 +435,10 @@ are always available.  They are listed here in alphabetical order.
 | 
			
		|||
   The *expression* argument is parsed and evaluated as a Python expression
 | 
			
		||||
   (technically speaking, a condition list) using the *globals* and *locals*
 | 
			
		||||
   dictionaries as global and local namespace.  If the *globals* dictionary is
 | 
			
		||||
   present and lacks '__builtins__', the current globals are copied into *globals*
 | 
			
		||||
   before *expression* is parsed.  This means that *expression* normally has full
 | 
			
		||||
   present and does not contain a value for the key ``__builtins__``, a
 | 
			
		||||
   reference to the dictionary of the built-in module :mod:`builtins` is
 | 
			
		||||
   inserted under that key before *expression* is parsed.
 | 
			
		||||
   This means that *expression* normally has full
 | 
			
		||||
   access to the standard :mod:`builtins` module and restricted environments are
 | 
			
		||||
   propagated.  If the *locals* dictionary is omitted it defaults to the *globals*
 | 
			
		||||
   dictionary.  If both dictionaries are omitted, the expression is executed in the
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue