我的地盘听我的,global问题求助

图片 1

def discounts(price,rate):

目录:

0xC0000005: 读取位置 0xCDCDCDCD 时发生访谈冲突。
void shop::Pay(){
if (basket == NULL)
return;
float sum = 0.0;
float sum_tax = 0.0;
for (i = 0; &basket[i] != NULL; i )
{
basket[i].GetPrice();
sum_tax = basket[i].tax;
sum = basket[i].at_price;
}
cout << sum_tax << endl;
cout << "Total:" << sum << endl;
return;
}

正如,在主函数中输入数值总括税收,后在函数中参预全局变量,对my_price重新赋值为啥图中两行代码换了三个地方,输出结果会不平等?既然已经全局变量了,不该都是出口10000啊新手求助大神,感激defcalculateTax(price,tax_rate):total=price (price*tax_rate)returntotalglobalmy_pricemy_price=10000my_price=float(input("enteraprice:"))totalPrice=calculateTax(my_price,0.06)print("price=",my_price,"Totalprice=",totalPrice)

    final_price = price * rate#原价乘以折扣率

  风流倜傥、函数和进度

void goods::GetPrice(){
if (this == NULL)
return;
float rate = 0.1f;
if
rate -= 0.1f;
if (isImported)
rate = 0.05f;
tax = count*price*rate;
at_price = count*price tax;
cout << count << " " << name << ":" << at_price << endl;
}

    #old_price = 88 #这里准备更正动量

  二、再谈谈再次来到值

在GetPrice试行首回时报错,那是栈溢出呢?应该怎么改?客气求教!

    #print('修改后old_price的值是:',old_price)

  三、函数变量的功用域

    return final_price

  四、课时19课后习题及答案

    下素不相识龙活虎段都以生机勃勃对变量,上边打字与印刷不了局地变量

 

    上边是全局变量,能够在上面打印全局变量,能够访问,但不能改改

******************

old_price = float(input('请输入原价:'卡塔尔国卡塔尔国

生龙活虎、函数和经过

rate = float(input('请输入折扣率:'卡塔尔(قطر‎卡塔尔国

******************

#print('修改后old_price的值是:', old_price)

Python严苛来讲,独有函数,未有经过。此话怎讲?

new_price = discounts(old_price,rate)

>>> def hello():
    print("DC love ZWW")


>>> hello()
DC love ZWW
>>> temp = hello()
DC love ZWW
>>> temp
>>> print(temp)
None
>>> print(hello())
DC love ZWW
None
>>> type(temp)
<class 'NoneType'>
>>> type(hello())
DC love ZWW
<class 'NoneType'>

print('减价后价格是:',new_price)

调用print(hello())之后打字与印刷了两行字,第生龙活虎行,大家明白时hello()函数实施的,第二行的None是怎么回事呢?当不写return语句的时候,暗中同意Python会以为函数是return None的。所以说Python全数的函数皆有重返值。

>>> count = 5 #全局变量

 

>>> def MyFun():

*********************

count = 10 #校勘这里,不会影响全局变量

二、再谈谈重临值

print(count)

*********************

>>> MyFun()

在繁多编制程序语言中,大家说二个函数是整型,其实我们的意趣是指这几个函数会回来贰个整型的重返值。而Python不那样干,Python能够动态明确函数的品类,何况函数还能够回到分裂种类的值。还记得“Python独有变量,没知名字”那句话吗?只需清楚Python会再次来到三个事物,然后拿来用就能够了。其余,Python如同还足以相同的时间重返四个值。

10

>>> def test():
    return [1,'小甲鱼',3.14]

>>> test()
[1, '小甲鱼', 3.14]

>>> print(count)

Python能够使用列表打包七体系型的值叁遍性重临。当然,也能够一贯用元组的方式重回多个值:

5

>>> def test():
    return 1,'小甲鱼',3.14

>>> test()
(1, '小甲鱼', 3.14)

>>> def MyFun():

 

global count #用global关键字修正全局变量

**************************

count = 10

三、函数变量的效用域

print(count)

**************************

>>> MyFun()

 变量的作用域也正是平凡所说的变量可以知道性,平时的编制程序语言都有部分变量和全局变量之分。解析以下代码:

10

def discounts(price, rate):
    final_price = price * rate
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price, rate)
print('打折后价格是:', new_price)

>>> print(count)

次第的实行结果如下:

10

请输入原价:80
请输入折扣率:0.75
打折后价格是: 60.0

支撑函数嵌套

来解析一下代码:在函数discounts()中,四个参数是price和rate,还应该有一个是final_price,它们都以discounts()函数中的局地变量。为啥称之为局地变量呢?不妨改正下代码:

>>> def fun1():

def discounts(price, rate):
    final_price = price * rate
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price, rate)
print('打折后价格是:', new_price)

print('这里试图打印局部变量final_price的值:',final_price)

print('fun1(卡塔尔正在被调用...'卡塔尔国

 程序走起,报错....

def fun2():

请输入原价:80
请输入折扣率:0.75
打折后价格是: 60.0
Traceback (most recent call last):
  File "C:Users14158Desktoplalallalalal.py", line 12, in <module>
    print('这里试图打印局部变量final_price的值:',final_price)
NameError: name 'final_price' is not defined

print('fun2(卡塔尔国正在被调用...'卡塔尔

 错误原因:final_price未有被定义过,约等于说,python找不到final_price这一个变量。那是因为final_price只是三个有的变量,它的功效范围只在它的地盘上----discounts(卡塔尔国函数的概念范围内-----有效,出了这一个范围,就不再归属它的地盘了,它将什么都不是。

fun2()

总括一下:在函数里边定义的参数以致变量,都称之为局地变量,出了那个函数,那么些变量都以低效的。事实上的规律是,Python在运维函数的时候,这里在调用那一个函数的时候,利用栈实行仓库储存,把函数里的变量代码都扔到栈里面去,当施行完该函数后,函数中的全部数据都会被活动删除。所以在函数外边是不能够访谈到函数内部的风华正茂部分变量的。

>>> fun1()

与部分变量绝没有错全局变量,程序中old_price、new_price、rate都以在函数外边定义的,它们都以全局变量,全局变量具备更加大的功用域,举例,我们能够在函数中访问到它们:

fun1(卡塔尔(英语:State of Qatar)正在被调用...

def discounts(price, rate):
    final_price = price * rate
    print('这里试图打印全局变量old_price的值:',old_price)
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price, rate)
print('打折后价格是:', new_price)

fun2(卡塔尔(قطر‎正在被调用...

程序施行的结果如下:

唯有fun1技艺调用fun2

请输入原价:80
请输入折扣率:0.75
这里试图打印全局变量old_price的值: 80.0
打折后价格是: 60.0

在函数1中间嵌套的函数2,除了函数1内得以调用,函数1外都不可能调用

唯独在使用全局变量时,要小心,注意一点:在Python中,你能够在函数中明目张胆地访问三个全局变量,但借使你筹划去校订它,就能够有意外的业务时有发生。分析以下的代码:

  闭包

def discounts(price, rate):
    final_price = price * rate
    old_price = 50 #这里试图修改全局变量
    print('这里试图打印全局变量old_price的值:',old_price)
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price, rate)
print('全局变量old_price现在的值是:', old_price)
print('打折后价格是:', new_price)

闭包正是能够读取其余函数内部变量的函数

程序实践结果如下:

>>> def FunX(x):

请输入原价:80
请输入折扣率:0.75
这里试图打印全局变量old_price的值: 50
全局变量old_price现在的值是: 80.0
打折后价格是: 60.0

def FunY(y):

若果在函数内部希图改革全局变量,那么Python会创制多个新的一些变量代替(名字跟全局变量相通),但着实的全局变量是稳当的,所以实现的结果和贵裔的预料差别。

return x * y

至于全局变量,来拓宽下计算:全局变量在全部代码段中都是足以访问到的,不过不要试图在函数内部去更正全局变量的值,因为那样Python会自动在函数的当中创设二个名字同样的片段变量取代。

return FunY

 

>>> i = FunX(8)>>>

*******************************

 i.FunY at 0x0000020063B3C840>>>>

四、课时19课后习题及答案

 type(i)>>> i(5)

*******************************

40

 图片 2

>>> FunX(8)(5)

图片 3

40

图片 4

在外表,调用不了FunY

图片 5

闭包中不可能订正外界成效域的豆蔻梢头部分变量

图片 6

计较更改时,内嵌函数内的绝对局地变量值就能够被屏蔽掉,未有初值

图片 7

>>> def Fun1():

图片 8

x = 5 #非全局变量的外表变量

图片 9

def Fun2():

图片 10

x *= x  #有个别变量未有概念不能援用

return x #

return Fun2()

>>> def Fun1():

x = [5]

def Fun2():

x[0]*= x[0] #列表不是贮存在在栈里面,不会出错

return x[0]

return Fun2()

>>> Fun1()

25 

本文由新葡萄京娱乐场8522发布于计算机编程,转载请注明出处:我的地盘听我的,global问题求助

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。