##函数与过程
           ※函数(function):有返回值
           ※过程(procedure):是简单的,特殊并且没有返回值的
            (python严格来说,只有函数没有过程,如下将左边的函数调用然后给temp,成功打印了hello word,但是当试图访问temp时,回车后并没有显示,因为那个函数并没有返回值给他,那不会显示,就说明他没有返回值嘛,并不是,如下查看temp的类型,知道,就算hello函数没有写上return语句,python也并不是什么都不返回的,他返回一个None对象,所以呢,我们说python的函数都会返回某些东西的,有返回值就返回,没有返回值就返回None)
            
##再谈谈返回值
            (在许多编程语言中,我们说一个函数是整型的函数,是指这个函数会返回一个整型的返回值,而python不这么干,python是动态地确定类型,我们还知道python是没有变量的,只有名字,换而言之,在python里边,就是拿到一个东西过来用就可以了,不用去关注他是什么类型,包括他的返回值,python似乎是可以返回多个值的)
            
            (上面是打包成了一个列表返回,也可以不加中括号,就会默认打包成元组返回,其实乍看一下是返回了多个值,其实是将多个值打包成一个数据返回的,)
            
##我的地盘听我的
           ※局部变量(Local Variable) :在函数里边定义的参数以及变量都称为局部变量


            (也就是说上面圈起来的都是discounts里边的局部变量,作用域只在里面,出了这个函数,就是无效的,事实上的原理就是,python在运行这个函数的时候,他是利用栈存储,把调用的那个函数所需要的代码和变量都扔到那个栈里边去,当执行完该函数之后,那么这个函数会被自动删除,这个栈的数据会自动地清空,所以函数外是无法访问到内部的局部变量的。)

※全局变量(Global Variable):在函数外面定义的

            (全局变量的作用域是整个代码段,整个文件,在python里边,可以在函数中肆无忌惮的访问一个全局变量,但是你试图去修改一个全局变量,那么可能会造成多线程安全问题)

            (在python里边,可以在函数中肆无忌惮的访问一个全局变量,但是你试图去修改一个全局变量,那么可能会发生奇怪的事,如下,在函数中改了全局变量然后打印,出到函数外面再打印又变回了原来的值,这是因为在函数内试图去修改全局变量的话,那么python会自动创建一个新的局部变量代替,名字跟全局变量是一摸一样的,所以在函数里打印的是新建的局部变量的值)

##温故知新之习题
           0. 下边程序会输入什么?

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

答:有些编程语言不够“聪明”,像这类向前引用的方式会导致报错,但Python足够“醒目”,这段代码是正确的!
           会输出:
           我在next()函数里…
           我在pre()函数里…

1. 请问以下这个函数有返回值吗?

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

答:如果没有使用return语句指定返回值,Python也不是什么都不返回的,Ta会返回一个None对象,所以我们说Python所有的函数都有返回值。

2. 请问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]
>>>

3. 目测以下程序会打印什么内容:

def fun(var):var = 1314print(var, end='')var = 520
fun(var)
print(var)

答:会打印:1314520

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

var = ' Hi 'def fun1():global varvar = ' Baby 'return fun2(var)def fun2(var):var += 'I love you'fun3(var)return vardef fun3(var):var = ' 小甲鱼 'print(fun1())

答:会打印:baby I love you
           小甲鱼建议不到万不得已不要使用全局变量,简洁的概括为:
             a) 代码可读性变差
              b) 代码安全性降低

以下关于全局变量的危言耸听是转来的,大家不妨也看下:

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

##动动手
           0. 编写一个函数,判断传入的字符串参数是否为“回文联”
           (回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
           答:方法一

def palindrome(string):length = len(string)last = length - 1length //= 2flag = 1for each in range(length):if string[each]!= string[last]:flag = 0last -=1if flag == 1:return 1else:return 0string = input("请输入一句话:")
if palindrome(string) == 1:print("是回文联:")
else:print("不是回文联!")

方法二

def palindrome(string):list1 = list(string)list2 = reversed(list1)if list1 == list(list2):return '是回文联!'else:return '不是回文联!'
print(palindrome('上海自来水来自海上'))

1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。程序执行结果如图:
           答:

def count(*param):length = len(param)for i in range(length):letters = 0space = 0digit = 0others = 0for each in param[i]:if each.isalpha():letters += 1elif each.isdigit():digit += 1elif each == " ":space += 1else:others += 1print("第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。" % (i+1,letters,digit,space,others))count("I love fishc.com.","I love you, you love me.")

函数:我的地盘听我的+习题复习相关推荐

  1. Python第019讲课后测试题:函数-我的地盘听我的

    函数-我的地盘听我的 测试题: 0. 下边程序会输入什么? def next():print('我在next()函数里...')pre()def pre():print('我在pre()函数里...' ...

  2. 019函数:我的地盘听我的

    019函数:我的地盘听我的 一.函数与过程 过程procedure:简单.特殊并且没有返回值的 >>> def hello():print('Hello xx') >>& ...

  3. 第019讲:函数:我的地盘听我的

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

  4. 高中数学如何学好,必修一函数的单调性与最值(习题)

    很多同学给老师留言说,函数的概念我懂,可是就是不会做题,高中数学必修一函数章节那个点,一定要把函数的基础学扎实了,然后利用技巧方法去解关于函数的单调性与最值这个点,不管是函数那个点都要学好基础. 大部 ...

  5. 20210330:二叉树力扣相关习题复习(上)

    20210330:二叉树力扣相关习题复习(上) 题目 思路与算法 代码实现 写在最后 题目 路径总和 II 二叉树的最近公共祖先 二叉树展开为链表 思路与算法 路径总和 II:经典三序遍历二叉树题目, ...

  6. 可视计算机应用期末考试,职称计算机考试photoshop考试习题复习

    职称计算机考试photoshop考试习题复习 导语:photoshop是一个功能强大的应用软件,下面是小编给大家提供的职称计算机考试photoshop考试习题复习,大家可以参考练习,更多习题练习请关注 ...

  7. 二元函数对xy同时求导_更新丨10分钟掌握高等数学上册函数极限求解问题(考研、期末复习均可以用)...

    学过高数的都知道,极限在高数的应用频率是非常高的,而且是很多高数知识的基础,求导.变限积分求极限.多重积分求极限等等均会用到 虽然是基础,但是很多人在刚学习的时候就会直接被理论弄懵圈,因此就无法继续再 ...

  8. 106 定积分习题复习及应用(本系列课程上册圆满结束)

    106 定积分习题复习及应用 本系列高等数学视频全集1-106系列视频由汤家凤教授全程讲授,在此致谢汤家风老师 的辛勤付出!也预祝各位同学考研成功! 数学功底好的同学的也可以一起来学习大数据!开启大数 ...

  9. 课时19:函数:我的地盘听我的

    目录: 一.函数和过程 二.再谈谈返回值 三.函数变量的作用域 四.课时19课后习题及答案 ****************** 一.函数和过程 ****************** Python严格 ...

最新文章

  1. 开源项目的build.js
  2. oracle服务说明
  3. 【华为云技术分享】云图说 | 初识云耀云服务器,打造“极优、极简”的云上体验
  4. Python批量检查网页是否被注入其他页面
  5. CentOS 5.X MySQL5.5.35 编译的bug
  6. 一路风景之川藏线徒步笔记
  7. python 线程类
  8. (五)Thymeleaf标准表达式之——[7-8]条件表达式 默认表达式
  9. 单片机C语言程序设计实训100例:基于AVR+proteus仿真pdf
  10. 锐起BSD5.0企业无盘下载免费试用
  11. 马老师的996,不是鸡汤,是​我的人生信条!
  12. Windbg的获取与安装教程
  13. 第16届东北四省赛题解
  14. 需求分析(团队作业3)
  15. NPOI读取Word模板并保存
  16. 用计算机画漫画很难吗,怎么在电脑上画漫画,难不难
  17. Dalvik--Android专属Java虚拟机
  18. ifconfig查看网络丢包
  19. python中文朗读_Python:语音处理,实现在线朗读RFC文档或本地文本文件
  20. 消息推送系统——(零)推倒萝莉之术

热门文章

  1. factorybean 声明_说说 Spring 框架中的 Factory Bean
  2. 企业应规避OA系统选型的四大误区
  3. java ppt转html_c# Office文件转换成Html格式(将PPT转换成HTML)
  4. 洛谷 P-4045 密码(AC自动机+状态压缩+数位DP+乱搞)
  5. 重温 w3cshool css3
  6. MFC 让对话框不显示在任务栏和桌面
  7. 量化投资学习-37:底部涨停板操作
  8. SUMIF和sumifs的区别
  9. 图记 2016.1.12 压缩图片
  10. Turtlebot2简单控制