Table of Contents
1. Block-level scope
li = [lambda :x for x in range(10)]
Copy after login
" >
li = [lambda :x for x in range(10)]
Copy after login
Home Backend Development Python Tutorial Use Python five points to get the scope method

Use Python five points to get the scope method

Mar 16, 2017 pm 04:25 PM
python

1. Block-level scope

Think about whether there will be output when running the following program at this time? Will the execution be successful?

#块级作用域
 
if 1 == 1:
    name = "lzl"
 
print(name)
 
 
for i in range(10):
    age = i
 
print(age)
Copy after login

Let’s take a look at the execution results first

C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py
lzl
9
Copy after login

Process finished with exit code 0

The code was executed successfully, no problem; in Java/C# , executing the above code will prompt that name and age are not defined, but it can be executed successfully in Python. This is because there is no block-level scope in Python. The variable# in the code block ##, it can be called externally, so it can run successfully;

2. Local scope

Looking back at the knowledge learned before, when we learn

function, the function is Separate scope, there is no block-level scope in Python, but there is local scope; look at the following code

#local scope

def  func():
    name = "lzl"
 
print(name)
Copy after login
Run this code and think about it. Will there be output?

Traceback (most recent call last):
  File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module>
    print(name)
NameError: name 'name' is not defined
Copy after login
Copy after login
An error is reported when running. I believe everyone can understand this. The name variable only takes effect inside the func() function, so it cannot be called globally. Make a simple adjustment to the above code and look at it again. What's the result?

#局部作用域
 
def  func():
    name = "lzl"
 
func()          #执行函数
print(name)
Copy after login
Added a code to the previous code. Before the variable name is printed, a function is executed. Will the printing change at this time?

Traceback (most recent call last):
  File "C:/Users/L/PycharmProjects/s14/preview/Day8/作用域/main.py", line 23, in <module>
    print(name)
NameError: name 'name' is not defined
Copy after login
Copy after login
The execution still reports an error, let’s go back to the sentence just now: even if the function is executed, the scope of name is only inside the function, and it still cannot be called from outside; remember the first two knowledge points, Next, let’s start the amplification trick

3. Scope chain

Adjust the function and see what the execution result of the following code is?

#作用域链
 
name = "lzl"
def f1():
    name = "Eric"
    def f2():
        name = "Snor"
        print(name)
    f2()
f1()
Copy after login
Having learned functions, you must know that Snor will be output after f1() is executed; let’s remember a concept first. There is a scope chain in Python. Variables will be found from the inside to the outside. Go to your own scope first. I didn’t go to the superiors to look for it until I couldn’t find it and reported an error

4. Ultimate Edition Scope

Okay, enough of the foreshadowing, the Ultimate Edition is here~~

#终极版作用域
 
name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    f1()
 
f2()
Copy after login
Think about whether the final execution result of f2() is to print "lzl" or "eric"? Remember your answer. Instead of posting the answer now, take a look at the following code:

#终极版作用域
 
name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    return f1
 
ret = f2()
ret()
 
#输出:lzl
Copy after login
The execution result is "lzl". Analyze the above code. The execution result of f2() is function f1. The memory address, that is, ret=f1; executing ret() is equivalent to executing f1(). When executing f1(), it has nothing to do with f2(). name="lzl" and f1() are in the same scope chain, inside the function If there is no variable, it will look outside, so the value of the variable name is "lzl" at this time; if you understand this, then you also know the answer to the ultimate code that you did not give the answer just now

#终极版作用域
 
name = "lzl"
 
def f1():
    print(name)
 
def f2():
    name = "eric"
    f1()
 
f2()
 
# 输出:lzl
Copy after login
Yes, the output It is "lzl". Remember that before the function is executed, the scope has been formed and the scope chain has also been generated.

5. Sina interview question

li = [lambda :x for x in range(10)]
Copy after login

Determine the type of li? What type are the elements in li?

print(type(li))
print(type(li[0]))
 
# <class &#39;list&#39;>
# <class &#39;function&#39;>
Copy after login
You can see that li is a list type and the elements in the list are functions. Then print the return value of the first element in the list. What is the return value at this time?

#lambada 面试题
 
li = [lambda :x for x in range(10)]
 
res = li[0]()
print(res)
 
#输出:9
Copy after login
liThe return value

of the first function is 9, not 0. Remember: the internal code will not be executed before the function is executed; you can practice the code in the blog by yourself, Deepen your impression

The above is the detailed content of Use Python five points to get the scope method. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to program deepseek How to program deepseek Feb 19, 2025 pm 05:36 PM

DeepSeek is not a programming language, but a deep search concept. Implementing DeepSeek requires selection based on existing languages. For different application scenarios, it is necessary to choose the appropriate language and algorithms, and combine machine learning technology. Code quality, maintainability, and testing are crucial. Only by choosing the right programming language, algorithms and tools according to your needs and writing high-quality code can DeepSeek be successfully implemented.

How to access DeepSeekapi - DeepSeekapi access call tutorial How to access DeepSeekapi - DeepSeekapi access call tutorial Mar 12, 2025 pm 12:24 PM

Detailed explanation of DeepSeekAPI access and call: Quick Start Guide This article will guide you in detail how to access and call DeepSeekAPI, helping you easily use powerful AI models. Step 1: Get the API key to access the DeepSeek official website and click on the "Open Platform" in the upper right corner. You will get a certain number of free tokens (used to measure API usage). In the menu on the left, click "APIKeys" and then click "Create APIkey". Name your APIkey (for example, "test") and copy the generated key right away. Be sure to save this key properly, as it will only be displayed once

Major update of Pi Coin: Pi Bank is coming! Major update of Pi Coin: Pi Bank is coming! Mar 03, 2025 pm 06:18 PM

PiNetwork is about to launch PiBank, a revolutionary mobile banking platform! PiNetwork today released a major update on Elmahrosa (Face) PIMISRBank, referred to as PiBank, which perfectly integrates traditional banking services with PiNetwork cryptocurrency functions to realize the atomic exchange of fiat currencies and cryptocurrencies (supports the swap between fiat currencies such as the US dollar, euro, and Indonesian rupiah with cryptocurrencies such as PiCoin, USDT, and USDC). What is the charm of PiBank? Let's find out! PiBank's main functions: One-stop management of bank accounts and cryptocurrency assets. Support real-time transactions and adopt biospecies

Quantitative currency trading software Quantitative currency trading software Mar 19, 2025 pm 04:06 PM

This article explores the quantitative trading functions of the three major exchanges, Binance, OKX and Gate.io, aiming to help quantitative traders choose the right platform. The article first introduces the concepts, advantages and challenges of quantitative trading, and explains the functions that excellent quantitative trading software should have, such as API support, data sources, backtesting tools and risk control functions. Subsequently, the quantitative trading functions of the three exchanges were compared and analyzed in detail, pointing out their advantages and disadvantages respectively, and finally giving platform selection suggestions for quantitative traders of different levels of experience, and emphasizing the importance of risk assessment and strategic backtesting. Whether you are a novice or an experienced quantitative trader, this article will provide you with valuable reference

deepseek how to deploy r1 model locally - deepseek locally install r1 model tutorial deepseek how to deploy r1 model locally - deepseek locally install r1 model tutorial Mar 12, 2025 pm 12:15 PM

DeepSeekR1 model local deployment guide: Unlocking data analysis and prediction potential DeepSeek is a powerful data analysis and prediction tool, and its R1 model can provide efficient and accurate model support for various application scenarios. This guide will provide you with detailed instructions on how to deploy the DeepSeekR1 model in your on-premises environment to help you get started quickly and take advantage of its power. System requirements for the local deployment step preparation stage of the DeepSeekR1 model: Please make sure that your local machine meets the minimum system configuration requirements of DeepSeek (for specific requirements, please refer to the official DeepSeek document). Software installation: Download and install the installation package provided by DeepSeek and follow the installation guide

How to implement calls with Python - Deepseek Python Call Method Guide How to implement calls with Python - Deepseek Python Call Method Guide Mar 12, 2025 pm 12:51 PM

DeepSeek Deep Learning Library Python Call Guide DeepSeek is a powerful deep learning library that can be used to build and train various neural network models. This article will introduce in detail how to use Python to call DeepSeek for deep learning development. Steps to Call DeepSeek with Python 1. Install DeepSeek Make sure that the Python environment and pip tools are installed. Install DeepSeek with the following command: pipinstalldeepseek2. Import the DeepSeek library Import the DeepSeek library in a Python script or JupyterNotebook: impor

What is Binance Alpha What is Binance Alpha Mar 25, 2025 pm 03:39 PM

Anbi Alpha is a tool and service aggregation platform for professional traders and investors on the Binance platform. Its core functions include: 1. Strategy Square, which brings together different trading strategies; 2. Strategy builder, which allows custom trading strategies; 3. Advanced data analysis, providing market analysis tools; 4. Institutional-level services to meet the needs of professional investors.

Which exchanges can send option hedging instructions through the trading side Which exchanges can send option hedging instructions through the trading side Mar 28, 2025 pm 03:27 PM

As of 2024, mainstream cryptocurrency exchanges that support directly sending option hedging instructions through trading terminals: 1. Deribit supports advanced strategies such as Delta hedging and Gamma Scalping, and provide web version/API one-click hedging; 2. OKX supports volatility hedging and strategy combination tools, and a built-in hedging panel on the web/APP; 3. Binance supports protective hedging, requiring manual or API combination positions; 4. CME, providing standard options, requiring access through brokers; 5. LedgerX, providing professional-level hedging tools, requiring institutional certification.

See all articles