1.函数与过程
函数:有返回值
过程:简单的、特殊的、没有返回值
python只有函数没有过程
2.再谈返回值
>>> def back():
return [1,'wo',3.14]
>>> back()return 1,3.14,'小甲鱼'
>>> back()3.函数变量的作用域(变量的可见性)
在函数里面定义的变量是局部变量,被存储在栈里
全局变量作用域是整个代码段
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)
请输入原价:100
请输入折扣率:0.8
这里试图打印全局变量old_price的值: 100.0
打折后的价格是: 80.0
4.在函数内,去修改全局变量的时候,会创建一个新的名字一样的局部变量,但是外部的全局变量不变。因为两个变量存储的空间不一样。
可以在函数内部去使用它,但是不要试图去修改他。
def discounts(price,rate):
final_price=price*rate
# print('这里试图打印全局变量old_price的值:',old_price)
old_price=50
print('修改后的全局变量1:',old_price)
return final_price
old_price=float(input('请输入原价:'))
rate=float(input('请输入折扣率:'))
new_price=discounts(old_price,rate)
print('修改后的全局变量为2:',old_price)
print('打折后的价格是:',new_price)
请输入原价:100
请输入折扣率:0.8
修改后的全局变量1: 50
修改后的全局变量为2: 100.0
打折后的价格是: 80.0
下边程序会输入什么?
def next():
print('我在next()函数里...')
pre()
def pre():
print('我在pre()函数里...')
next()
答:
我在next()函数里…
我在pre()函数里…
请问以下这个函数有返回值吗?
def hello():
print('Hello FishC!')
答:有。 会返回一个None的对象
如果没有使用return语句指定返回值,Python也不是什么都不返回的,Ta会返回一个None对象,所以我们说Python所有的函数都有返回值。
请问Python的return语句可以返回多个不同类型的值吗?
答:可以,默认用逗号隔开,是以元祖的形式返回,你当然也可以用列表包含起来返回:
>>> def myFun():
return '测试测试', 520, 3.14, True
>>> myFun()
('测试测试', 520, 3.14, True)
>>> def myFun2():
return ['小甲鱼', 1314, 5.12, False]
>>> myFun2()
['小甲鱼', 1314, 5.12, False]
>>>
目测以下程序会打印什么内容:
def fun(var):
var = 1314
print(var, end='')
var = 520
fun(var)
print(var)
答:1314
520
小甲鱼建议不到万不得已不要使用全局变量,简洁的概括为:
a) 代码可读性变差
b) 代码安全性降低以下关于全局变量的危言耸听是转来的,大家不妨也看下:
a) 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。
b) 它会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易自作多情地关注起上层的应用。这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰也不为过。
c) 由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用只是使泥潭上方再加一些迷烟瘴气。
d) 全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间。这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡。
e) 无需多言,如果您的系统中大量使用全局变量,那么您已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛。你不确定它什么时候会崩溃,也不晓得下一次投诉什么时候道理。
编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
def HuiWen():
str1=input('请输入一句话:')
length=len(str1)
length1=length//2
for i in range(length):
if str1[i]==str1[length-i-1]:
#if str1[i]==str1[length1-i-1]:
#print('%s不是回文联!'%str1)
#break
#else:
print('%s是回文联!'%str1)
break
else:
print('%s不是回文联!'%str1)
break
编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数
在这里param是收集参数,访问的时候跟访问二维数组一样,先访问外层,再访问内层
def CountNum(*param):
phanum1=0