Rumah pembangunan bahagian belakang Tutorial Python Python中闭包的简单介绍(附示例)

Python中闭包的简单介绍(附示例)

Oct 10, 2018 pm 03:45 PM
python

本篇文章给大家带来的内容是关于Python中闭包的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一:简介
   函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。
   Python中一切都是对象,函数也是对象

   a = 1
    a = 'str'
    a = func
Salin selepas log masuk

二:闭包

闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+环境变量)
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure),这个是最直白的解释!而且这个变量的值不会被模块中相同的变量值所修改!

三:闭包的作用

少使用全局变量,闭包可以避免使用全局变量
可以实现在函数外部调用函数内部的值:
print(f.__closure__[0].cell_contents)
# 返回闭包中环境变量的值!
模块操作是不能实现的!

# ----------------------------------------------#
# 闭包
# ----------------------------------------------#
# 函数内部定义函数
def curve_pre():
    def curve():
        print("抛物线")
        pass
    return curve
# 不能直接调用函数内部的函数
# curve()
func = curve_pre()
func()
def curve_pre1():
    a = 25  # 环境变量a的值在curve1外部

    def curve1(x):
        print("抛物线")
        return a * x ** 2
    return curve1       # 返回了的闭包
f = curve_pre1()
result = f(2)
print(result)
# 当在外部定义变量的时候,结果不会改变
a = 10
print(f(2))
print(f.__closure__)    # 检测函数是不是闭包
print(f.__closure__[0].cell_contents)    # 返回闭包中环境变量的值!
# ----------------------------------------------#
# 闭包的实例
# ----------------------------------------------#
def f1():
    m = 10
    def f2():
        m = 20  # 局部变量
        print("1:", m)  # m = 20
    print("2:", m)      # m = 10
    f2()
    print("3:", m)      # m = 10,臂包里面的值不会影响闭包外面的值
    return f2
f1()
f = f1()
print(f.__closure__)    # 判断是不是闭包

# ----------------------------------------------#
# 闭包解决一个问题
# ----------------------------------------------#
# 在函数内部修改全局变量的值计算某人的累计步数
# 普通方法实现
sum_step = 0


def calc_foot(step=0):
    global sum_step
    sum_step = sum_step + step


while True:
    x_step = input('step_number:')
    if x_step == ' ':   # 输入空格结束输入
        print('total step is ', sum_step)
        break
    calc_foot(int(x_step))
    print(sum_step)

# 闭包方式实现----->少使用全局变量,闭包可以避免


def factory(pos):

    def move(step):
        nonlocal pos    # 修改外部作用域而非全局变量的值
        new_pose = pos + step
        pos = new_pose  # 保存修改后的值
        return pos

    return move


tourist = factory(0)
print(tourist(2))
print(tourist(2))
print(tourist(2))
Salin selepas log masuk

Atas ialah kandungan terperinci Python中闭包的简单介绍(附示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Boleh vscode digunakan untuk mac Boleh vscode digunakan untuk mac Apr 15, 2025 pm 07:36 PM

VS Kod boleh didapati di Mac. Ia mempunyai sambungan yang kuat, integrasi git, terminal dan debugger, dan juga menawarkan banyak pilihan persediaan. Walau bagaimanapun, untuk projek yang sangat besar atau pembangunan yang sangat profesional, kod VS mungkin mempunyai prestasi atau batasan fungsi.

Boleh vscode menjalankan ipynb Boleh vscode menjalankan ipynb Apr 15, 2025 pm 07:30 PM

Kunci untuk menjalankan buku nota Jupyter dalam kod VS adalah untuk memastikan bahawa persekitaran Python dikonfigurasi dengan betul, memahami bahawa perintah pelaksanaan kod adalah konsisten dengan susunan sel, dan mengetahui fail besar atau perpustakaan luaran yang boleh menjejaskan prestasi. Fungsi penyempurnaan dan debug yang disediakan oleh kod VS dapat meningkatkan kecekapan pengekodan dan mengurangkan kesilapan.

See all articles