Appearance
question:c=1 def add(): c=100 return c+1 给定以上程序,说法正确的是()。 A) 调用add()以后,c的值为1 B) 调用add()以后,c的值为100 C) 调用add()以后,c的值为101 D) 函数add()的返回值是2
answer:正确答案是C。调用add()函数后,局部变量c被赋值为100,但是因为c是在函数内部定义的,因此这个c只在函数内部起作用。函数执行完毕后,c不再存在。而全局变量c的值仍然是1,不受函数内部的变量影响。函数add()的返回值是101,因为局部变量c被赋值为100,然后在return语句中加了1后返回。
question:那是不是选A
answer:不是的,因为调用add()函数后全局变量c的值仍为1,因此A选项不正确。虽然add()函数中也声明了变量c并赋值为100,但这个变量c只在函数内部存在,不影响全局变量c的值。因此函数执行完毕后,全局变量c仍然是1,不会被局部变量c覆盖。
question:A不是说c的值是1吗
answer:您是对的,非常抱歉我的回答有误。在全局变量c被赋值为1的情况下,调用add()函数不会影响全局变量c的值,因此A选项是正确的。在函数add()内部,局部变量c被赋值为100,但是它只对函数内部的代码块有效,当函数执行完成后,局部变量c就会被销毁,不会对全局变量c的值产生影响。所以,调用add()函数后全局变量c的值仍为1。
question:set1 = {1, 2, 3} set2 = set1.copy() set3 =set1 set4=set(set1) 针对以上程序,当对set1进行修改时,以下说法正确的是()。 A) set2发生改变 B) set3发生改变 C) set4发生改变 D) set2,set3和set4都发生改变
answer:正确答案是B和D。由于set3是对set1的引用,因此对set1进行修改会直接影响set3。而set2和set4都是对set1的拷贝,因此对set1进行修改不会改变set2和set4。也就是说,set3是指向原来的set1集合,而set2和set4是复制了一份原来的set1集合。当原来的set1集合被修改时,原来的set3引用会改变,set2和set4的引用不会受影响。所以B选项和D选项是正确的。而A选项是错误的,因为set2和set1是不同的对象,修改set1不会影响到set2。同理,C选项也是错误的,set4和set1也是不同的对象,修改set1不会影响到set4。