019函数:我的地盘听我的

019函数:我的地盘听我的

一、函数与过程

过程procedure:简单、特殊并且没有返回值的

>>> def hello():
	print('Hello xx')
>>> temp = hello()
Hello xx
>>> temp
>>> print(temp)
None

二、返回值

>>> def back():
	return 1,'xx',3.14

>>> back()
(1, 'xx', 3.14)

三、局部变量Local Variable和全局变量Global Variable

局部变量:在函数中定义的参数及变量,出了函数变量无效
全局变量:在整个python中都可以访问到,可以在函数中去读取他的值,但不要试图在函数内部修改他,因为这样的话python会自动在函数内部新建一个名称一样的局部变量代替。

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

o_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
n_price = discounts(o_price,rate)
print('修改后o_price的值是2:',o_price)
print('打折后价格是:',n_price)

局部变量:price、f_price、rate(只在函数discounts中定义)
全局变量:o_price、n_price

==================================================================================

思考题

0.下边程序会输入什么?
def next():
    print('我在next()函数里...')
    pre()

def pre():
    print('我在pre()函数里...')
    
next()

我在next()函数里…
我在pre()函数里…

1.请问以下这个函数有返回值吗?
def hello():
        print('Hello FishC!')

>>> def hello():
        print('Hello FishC!')

        
>>> hello()
Hello FishC!
>>> print(hello())
Hello FishC!
None
2.请问Python的return语句可以返回多个不同类型的值吗?

可以,默认用逗号隔开,以元组形式返回

3.目测以下程序会打印什么内容:
def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

1314520

4.目测以下程序会打印什么内容?
var = ' Hi '

def fun1():
    global var
    var = ' Baby '
    return fun2(var)

def fun2(var):
    var += 'I love you'
    fun3(var)
    return var

def fun3(var):
    var = ' 小甲鱼 '

print(fun1())

‘Baby I love you’

Ps:建议不到万不得已不要使用全局变量,简洁的概括为:
a) 代码可读性变差
b) 代码安全性降低

以下关于全局变量的危言耸听是转来的,大家不妨也看下:
a) 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。
b) 它会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易自作多情地关注起上层的应用。这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰也不为过。
c) 由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用只是使泥潭上方再加一些迷烟瘴气。
d) 全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间。这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡。
e) 无需多言,如果您的系统中大量使用全局变量,那么您已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛。你不确定它什么时候会崩溃,也不晓得下一次投诉什么时候道理。

操作题

0. 编写一个函数,判断传入的字符串参数是否为“回文联”

(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
程序执行结果如图:
在这里插入图片描述

print('==========RESTART==========')
def couplet():
    write = input('请输入一句话:')
    if list(write) == list(reversed(write)):
        print('是回文联!')
    else:
        print('不是回文联!')

couplet()
1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。

程序执行结果如图:
在这里插入图片描述

print('==========RESTART==========')
def count(*x):
    long = len(x)
    for i in range(long):
        letter = number = blank = others = 0
        for each in x[i]:
            if each.isalpha():
                letter += 1
            elif each.isdigit():
                number += 1
            elif each == ' ':
                blank += 1
            else:
                others += 1
        print('第',i+1,'个字符串共有:英文字母',letter,'个,数字',number,'个,空格',blank,'个,其他字符',others,'个。')


count('I love fishc.com.','I love you, you love me.')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值