首页 > 其他分享 >函数调用与作用域

函数调用与作用域

时间:2024-09-19 13:51:27浏览次数:10  
标签:random 函数 作用域 global 函数调用 列表 print var

引言

        在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型以及函数的定义与使用。本课时将介绍 Python 中的函数调用与作用域,包括如何调用函数、局部变量与全局变量的概念,并通过一个具体的示例来展示如何使用函数解决实际问题。

函数调用

调用函数是执行函数体中的代码的过程。在 Python 中,调用函数的基本语法如下:

function_name(arguments)
  • function_name:函数名。
  • arguments:传递给函数的参数,可以没有参数,也可以有多个参数,参数之间用逗号 , 分隔。

示例:调用函数

def greet(name):
    print(f"Hello, {name}!")

greet("Alice")  # 调用函数

局部变量与全局变量

在 Python 中,变量的作用域决定了变量在哪些地方可以被访问。主要有两种变量作用域:局部变量和全局变量。

  1. 局部变量

    • 局部变量是在函数内部定义的变量,只能在函数内部访问。
    def my_function():
        local_var = 10  # 局部变量
        print(local_var)
    
    my_function()  # 输出 10
    # print(local_var)  # 报错:NameError: name 'local_var' is not defined
  2. 全局变量

    • 全局变量是在函数外部定义的变量,可以在整个模块中访问。
    global_var = 20  # 全局变量
    
    def my_function():
        print(global_var)
    
    my_function()  # 输出 20
    print(global_var)  # 输出 20
  3. 修改全局变量

    • 如果在函数内部需要修改全局变量,需要使用 global 关键字声明。
    global_var = 20
    
    def modify_global():
        global global_var
        global_var = 30
    
    print(global_var)  # 输出 20
    modify_global()
    print(global_var)  # 输出 30

使用函数解决实际问题

        现在我们通过一个具体的示例来展示如何使用函数解决实际问题。假设我们需要编写一个程序,该程序可以计算一个列表中所有奇数的平方和。

示例代码

# 定义一个函数,计算一个列表中所有奇数的平方和
def sum_of_squares_of_odds(numbers):
    """ 计算列表中所有奇数的平方和。"""
    total = 0
    for number in numbers:
        if number % 2 != 0:
            total += number ** 2
    return total

# 定义一个函数,生成一个包含 n 个随机整数的列表
def generate_random_numbers(n, lower_bound, upper_bound):
    """ 生成一个包含 n 个随机整数的列表。"""
    import random
    return [random.randint(lower_bound, upper_bound) for _ in range(n)]

# 主程序
def main():
    # 生成一个包含 10 个随机整数的列表
    random_numbers = generate_random_numbers(10, 1, 100)
    print(f"生成的随机数列表:{random_numbers}")
    
    # 计算奇数的平方和
    result = sum_of_squares_of_odds(random_numbers)
    print(f"奇数的平方和:{result}")

# 运行主程序
if __name__ == "__main__":
    main()

示例解析

  1. 定义函数 sum_of_squares_of_odds

    • 该函数接收一个列表 numbers,计算列表中所有奇数的平方和。
    • 使用 for 循环遍历列表中的每个元素,如果是奇数,则计算其平方并累加到 total 中。
    • 最后返回 total
  2. 定义函数 generate_random_numbers

    • 该函数生成一个包含 n 个随机整数的列表。
    • 使用 random.randint() 函数生成随机整数,并使用列表推导式生成列表。
  3. 主程序 main

    • 生成一个包含 10 个随机整数的列表,并打印该列表。
    • 调用 sum_of_squares_of_odds 函数计算奇数的平方和,并打印结果。

小结

        通过本课时的学习,你已经掌握了 Python 中的函数调用与作用域,并通过一个具体的示例展示了如何使用函数解决实际问题。理解局部变量与全局变量的概念对于编写清晰、高效的代码非常重要。函数作为重要的编程构造,可以帮助我们更好地组织代码,减少重复代码,提高代码的可读性和可维护性。

标签:random,函数,作用域,global,函数调用,列表,print,var
From: https://blog.csdn.net/qq_57335683/article/details/142358341

相关文章

  • 大项目函数调用详解
    os.path.relpath是什么os.path.relpath是Python中os.path模块的一个函数,用于获取两个路径之间的相对路径。作用:os.path.relpath(path,start)会返回从start目录到path目录的相对路径。如果不指定start,则默认从当前工作目录计算。path:目标路径,表示你想获取相对路径......
  • 精读《C Primer Plus》——作用域(scope)
    作用域(scope)参考:CPrimerPlus第6版第12章存储类别、链接和内存管理1.分类2.blockscope/块作用域2.1.定义block/块是用一块花括号括起来的代码区域块作用域变量的范围是从定义处到包含该定义块的末尾声明在内层块中的变量,其作用域仅局限于该声明所在的块......
  • 鹏哥C语言42---函数调用相关练习
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>//------------------------------------打印1000-2000年之间的闰年---------------------------------------------------//闰年的判断规则有两个//1.能被4整除,但是不能被100整除//2.能被400整除也是闰年/*intmain(......
  • 面试-JS基础知识-作用域和闭包
    问题this的不同应用场景手写bind函数实际开发中闭包的应用场景,举例说明创建10个<a>标签,点击的时候弹出来对应的序号作用域:某个变量的合法使用范围全局函数块级**自由变量上面图的最里面的红框————aa1a2都是自由变量,因为都没有被定义。会一层一层往上找。......
  • 《C++程序中如何降低函数调用开销》
    在C++编程中,性能优化是一个至关重要的话题。函数调用开销虽然在很多情况下可能并不显著,但在一些对性能要求极高的场景下,减少函数调用开销可以带来显著的性能提升。本文将深入探讨在C++程序中如何减少函数调用开销,帮助开发者写出更高效的代码。一、引言随着软件应用的不......
  • java父类、子类构造函数调用过程
    java父类、子类构造函数调用过程由此看出java类初始化时构造函数调用顺序:初始化对象的存储空间为零或null值;按顺序分别调用父类成员变量和实例成员变量的初始化表达式;调用父类构造函数;(如果实用super()方法指定具体的某个父类构造函数则使用指定的那个父类构造函数)按顺序分别......
  • Python3 学习笔记6-os 模块、错误和异常、面向对象编程、类的专有方法、命名空间和作
    目录一、os模块: 常用方法: 二、错误和异常:(1)语法错误:(2)异常:(3)异常处理:(4)抛出异常:(5)用户自定义异常:(6)清理行为:(7)with语句:三、面向对象编程: (1)类和对象:(2)继承:(3)封装:(4)多态:(5)运算符重载: 四、类的专有方法:(1)__init__(self,...):(2)__del__(self):(3)__repr__(self):(4)__set......
  • 面试-JS基础知识-作用域和闭包、this
    函数作为返回值functioncreate(){consta=100returnfunction(){console.log(a)//a在这里是自由变量,向上寻找}}constfn=create()consta=200fn()//100函数作为参数functionprint(fn){consta=13fn()}consta=100functionfn(......
  • 函数的作用域
    #局部变量不能修改全局变量,如需要修改是需要先进行声明a=1#全局变量deff():globala#声明使用全局变量print("第1次打印:%s"%a)a=2#修改全局变量print("第2次打印:%s"%a)deff_1():globala#因为上面已声明全局变......
  • S-Clustr(影子集群) Simple SCC伪代码编译器,工业控制DSL结构语言,递归函数调用
    项目地址:https://github.com/MartinxMax/S-Clustr/releases200S-ClustrSimpleDSL语法内置函数示例RUN(启动设备)RUN:<ID>STOP(停止设备)STOP:<ID>TIME(MS延时)TIME:<Delay/Ms>函数示例DEF(定义函数名,空形参)DEFFunction:DEF(函数名,带形参)DEFFunction:var,......