python 自定义函数疑问

为什么函数里的变量名不同,效果就不一样了?不是说不可变数据在函数里面,可读不可写吗?


这个运行报错
data = 100
def func():
    data = data +1
    print(data)

func()
print(data)
这个运行不报错
data = 100
def func():
    data1 = data +1
    print(data1)

func()
print(data)

第二个里面的 data1=data+1,对于data是只读,data1是一个新的变量

在第一个例子中,函数内部的 data 变量是一个局部变量,它与全局变量 data 同名,但是它们是不同的变量。在函数内部,data 被赋值为 data + 1,但是此时 data 还没有被定义,因此会抛出 UnboundLocalError 异常。

在第二个例子中,函数内部的 data1 变量是一个局部变量,它的值是全局变量 data 加上 1。这里的 data 是全局变量,函数内部只是读取了它的值,并没有修改它的值。

在 Python 中,如果在函数内部使用了一个变量名,Python 会首先在函数内部查找这个变量,如果找到了就使用它,如果没有找到就在全局作用域中查找。如果在函数内部对一个变量进行赋值,Python 会将这个变量视为局部变量,如果这个变量在函数内部没有定义,就会抛出 UnboundLocalError 异常。因此,如果想在函数内部修改全局变量的值,可以使用 global 关键字来声明这个变量是全局变量。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7622817
  • 这篇博客也不错, 你可以看下python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
  • 同时,你还可以查看手册:python- 自定义扩展类型:教程- 基础 中的内容
  • 除此之外, 这篇博客: python中的变量中的       变量名再次出现的时候,不是定义变量,而是直接使用之前定义的变量。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 买水果
        水果的价格是8.5元/斤
        买了7.5斤水果
        计算付款金额
        只要买水果,就返5块钱

    名字要:见名知意
        可以由字母,下划线和数字组成
        不能以数字开头
        不能和关键字重明

    驼峰命名法
        1.大驼峰:每一个单词的首字母都大写
        FirstName LastName
        2.小驼峰:第一个单词以小写字母开始,后续单词的首字母大写
        firstName lastName

    1、在python中可以使用print函数将信息输出到控制台
    如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符
    % 被称为格式化操作符,专门用于处理字符串中的格式
    包含%的字符串,被称为格式化字符串
    % 和不同的字符连用,不同类型的数据需要使用不同的格式化字符

    2、格式化字符串的含义
    %s               格式化字符串
    %d               有符号十进制整数,%06d表示输出的整数显示位数字,不足的地方使用0补全
    %f                 浮点数,%.02f表示小数点后只显示两位
    %%               输出%

    3、语法格式:
    print '格式化字符串' % 变量1
    print '格式化字符串' % (变量1,变量2...)
    # 用格式化字符串把需要填写变量的地方先占上

  • 您还可以看一下 jeevan老师的Python量化交易,大操手量化投资系列课程之内功修炼篇课程中的 基础编程之股票行情构造小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析:

    函数里面的变量名不同,会导致输出结果不同,这是因为变量名只是一个标识符,与变量所存值无关。在传递可变对象(如列表、字典等)时,函数修改可变对象时,会有相应的结果;在传递不可变对象时(如数字、字符串等),函数修改时会创建新的对象,原对象不会改变,所以按新变量名进行操作是不会有改变的。

    解决方案:

    1. 如果需要传递可变对象,可以在函数内部对传递对象进行修改,在函数外部可以看到这些修改。

    2. 如果需要将函数内部修改的结果返回给函数外部的变量名,可以使用return返回函数内部的结果。

    3. 如果需要将原来的变量名修改为别的变量名,可以先把原来的变量名赋值给一个新变量名,然后在使用新变量名进行操作。比如:

    a = [1,2,3] b = a # 将a的值赋值给b b.append(4) # 对b进行操作 print(a) # 输出:[1, 2, 3, 4] print(b) # 输出:[1, 2, 3, 4]

    代码说明:

    下面的代码实现的是一个简单的文件管理系统,包括用户登录、注册、文件查询、拷贝、删除等功能。其中,函数和变量的命名比较规范,注释也比较详细,可以让人很容易地看懂代码的整体逻辑。但是,由于篇幅过长,有些代码没有注释。如果需要更详细的讲解,请提出具体问题,我会尽力给予答复。

    代码展示: