知识点

函数与过程

在许多编程语言中,函数(function)是有返回值的,过程(procedure)是简单、特殊并且没有返回值的。而在Python中,严格来说只有函数没有过程。

例如:

>>> def hello():
print('hello fishc!') >>> temp = hello()
hello fishc! >>> temp
没有任何显示,为什么?因为我们这个hello函数没有return任何东西。 >>> print(temp)
None >>> type(temp)
<class 'NoneType'>
就算函数没有写上return语句,python也会返回一个None对象

在Python中,函数是可以返回多个值的,如下:

>>> def back():
return [1,'xiaojiayu',3.14] >>> back()
[1, 'xiaojiayu', 3.14]
>>> def back():
return 1,'xiaojiayu',3.14 >>> back()
(1, 'xiaojiayu', 3.14)

局部变量与全局变量

在函数里面定义的参数以及变量都称之为局部变量;

在函数外边定义的变量称之为全局变量。

函数内若试图修改全局变量,Python会新建一个同名局部变量用于存储修改值,原全局变量的值不变。

def discounts(price,rate):
final_price = price * rate
# print('这里试图打印全局变量old_price的值是:',old_price)
old_price = 50 #这里试图修改全局变量
print('修改后old_price的值1是:',old_price)
return final_price old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('修改后old_price的值2是:',old_price)
print('打折后价格是:',new_price)
#print('这里试图打印局部变量final_price的值:',final_price) #请输入原价:100
#请输入折扣率:0.8
#打折后价格是: 80.0
#Traceback (most recent call last):
# File "D:\python test\局部变量和全局变量.py", line 12, in <module>
# print('这里试图打印局部变量final_price的值:',final_price)
#NameError: name 'final_price' is not defined #在函数里面定义的参数以及变量都称之为局部变量,
#在函数外边定义的变量称之为全局变量 ==================== RESTART: D:\python test\局部变量和全局变量.py ====================
请输入原价:100
请输入折扣率:0.8
修改后old_price的值1是: 50
修改后old_price的值2是: 100.0
打折后价格是: 80.0

课后习题

测试题:

  • 下边程序会输入什么?
def next():
print('我在next()函数里……')
pre() def pre():
print('我在pre()函数里……') next() 运行结果:
================== RESTART: C:/Users/ThinkPad/Desktop/11.py ==================
我在next()函数里……
我在pre()函数里……
  • 以下函数有返回值吗?
>>> def hello():
print('Hello FishC!')

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

>>> def hello():
print('Hello FishC!')
>>> temp = hello()
Hello FishC!
>>> temp
>>> print(temp)
None
  • 请问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) 运行结果:
1314520
  • 目测以下程序会打印什么内容?
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()) 运行结果:
================== RESTART: C:/Users/ThinkPad/Desktop/11.py ==================
Baby I love you

动动手

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

##方法一:
def huiwen(string):
length = len(string)
last = length - 1
length //= 2
flag = 1
for each in range(length):
if string[each] != string[last]:
flag = 0
last -= 1 if flag == 1:
return 1
else:
return 0 string = input('请输入一句话:')
if huiwen(string) == 1:
print('是回文联')
else:
print('不是回文联') ##方法二:
def huiwen(string):
list1 = list(string)
list2 = reversed(list1)
if list1 == list(list2):
return '是'
else:
return '不是'
print(huiwen('上海自来水来自海上'))
  • 编写一个函数,分别统计出传入字符串参数的英文字母、空格、数字和其他字符的个数。
#分别统计出传入字符串参数的英文字母、空格、数字和其他字符的个数。
def count(*param):
length = len(param)
for i in range(length):
zm = 0
kg = 0
sz = 0
qt = 0
for each in param[i]:
if each.isalpha():
zm += 1
elif each.isdigit():
sz += 1
elif each == ' ':
kg += 1
else:
qt += 1
print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1,zm,sz,kg,qt))
count('I love fishc.com','I love you,you love me','5201314')

零基础入门学习Python(19)--函数:我的地盘听我的的更多相关文章

  1. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  2. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  3. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  4. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  5. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  6. 零基础入门学习Python(17)--函数:Python的乐高积木

    前言 相信大家小时候都玩过神奇的乐高积木, 只要通过想象力和创造力我们可以拼凑很多神奇的东西,那么随着我们学习的深入,我们编写的Python代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...

  7. 零基础入门学习Python(20)--函数:内嵌函数和闭包

    知识点 global关键字 使用global关键字,可以修改全局变量: >>> count = 5 >>> def Myfun(): count = 10 prin ...

  8. 零基础入门学习Python(36)--类和对象:给大家介绍对象

    知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...

  9. 零基础入门学习Python(18)--函数:灵活即强大

    前言 上一节课我们基本介绍Python函数的用法,这一节课我们主要针对函数的参数进行进一步的深入学习. 知识点 形参(parameter)和实参(argument) >>> def ...

随机推荐

  1. Ubuntu 14.04.1 配置 Android 源码开发环境(jdk版本切换)(转载)

    转自:http://www.cnblogs.com/ren-gh/p/4248407.html # Ubuntu 14.04.1 1.更新源: sudo apt-get update 安装vim工具: ...

  2. bzoj 3612: [Heoi2014]平衡【整数划分dp】

    其实就是-n~n中求选k个不同的数,和为0的方案数 学到了新姿势叫整数划分,具体实现是dp 详见:https://blog.csdn.net/Vmurder/article/details/42551 ...

  3. 洛谷 P2774 方格取数问题【最小割】

    因为都是正整数,所以当然取得越多越好.先把所有点权加起来,黑白染色后,s向所有黑点连流量为点权的边,所有白点向t连流量为点权的边,然后黑点向相邻的四个白点连流量为inf的边,表示不可割,这样一来,对于 ...

  4. 小程序各种授权封装、saveImageToPhotosAlbum、chooseAddress、getUserInfo、getLocation,保存图片、获取用户信息、获取位置信息、收货地址等

    代码略多,请异步 github __点击链接

  5. Luogu P2735 电网【真·计算几何/Pick定理】By cellur925

    题目传送门 刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何. 题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数. 因为必修5和必修2的阴影很快就想到了数学中 ...

  6. 压力测试之jmeter使用

    我很早之前就会使用jmeter,一直以为压力测试很简单,知道真正去做才明白,真正的压力测试并不只是会用jmeter而已.我现在才明白:会工具并不等同于会压力测试.对于压力测试需要补充的知识还有很多.. ...

  7. linux mysql 8 安装

    http://blog.itpub.net/31015730/viewspace-2152272/ https://blog.csdn.net/HaHa_Sir/article/details/805 ...

  8. _bzoj1503 [NOI2004]郁闷的出纳员【Splay】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 由于初始工资未达到下限而离开的员工不算在离开人数之内...坑爹... 然后就是写kth ...

  9. 离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers

    题目传送门 题意:给出一些花开花落的时间,问某个时间花开的有几朵 分析:这题有好几种做法,正解应该是离散化坐标后用线段树成端更新和单点询问.还有排序后二分查找询问点之前总花开数和总花凋谢数,作差是当前 ...

  10. 数学/找规律/暴力 Codeforces Round #306 (Div. 2) C. Divisibility by Eight

    题目传送门 /* 数学/暴力:只要一个数的最后三位能被8整除,那么它就是答案:用到sprintf把数字转移成字符读入 */ #include <cstdio> #include <a ...