Python学习笔记——Python 函数
1. 函数定义与调用
def MyFirstFunction():
print('这是我创建的第一个函数')
#调用
MyFirstFunction()
这是我创建的第一个函数
2. 函数文档
def MySecondFunction(name):
#下面这个字符串即为函数文档
'函数定义过程中的name叫形参'
print('你的名字是' + name)
MySecondFunction('Nigream')
#两个双下划线表示系统属性
print(MySecondFunction.__doc__)
#也可以用
help(MySecondFunction)
你的名字是Nigream
函数定义过程中的name叫形参
Help on function MySecondFunction in module __main__:
MySecondFunction(name)
函数定义过程中的name叫形参
3. 关键字参数
def SaySome(name , words):
print(name + '-->' + words)
SaySome(name='Nigream',words='hello')
Nigream-->hello
4. 默认参数
def SaySome(name = 'Nigream', words = 'hello'):
print(name + '-->' + words)
SaySome()
SaySome('苍井空')
SaySome('苍井空' , '我脱光衣服躺在镜头前,是为了生存;而你衣冠楚楚地站在镜头前,却是为了私欲和欺骗!')
Nigream-->hello
苍井空-->hello
苍井空-->我脱光衣服躺在镜头前,是为了生存;而你衣冠楚楚地站在镜头前,却是为了私欲和欺骗!
5. 收集参数
def test(*params):
print('参数的长度是:',len(params))
print('第三个参数是:',params[2])
test(1,2,3,4,'Nigream',5)
参数的长度是: 6
第三个参数是: 3
6. 返回值
def back():
return [1,'Nigream',3.14]
print(back())
#运行结果
[1, 'Nigream', 3.14]
def back1():
return 1,'Nigream',3.14
#这里被看成一个元组
print(back1())
[1, 'Nigream', 3.14]
(1, 'Nigream', 3.14)
7. 作用域
def discounts(price,rate):
final_price = price * rate
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后的价格是:',new_price)
请输入原价:100
请输入折扣率:0.8
打折后的价格是: 80.0
def discounts(price,rate):
final_price = price * rate
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后的价格是:',new_price)
print('这里试图打印局部变量final_price的值:',final_price)
请输入原价:100
请输入折扣率:0.8
打折后的价格是: 80.0
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-9-bd414db96855> in <module>()
7 new_price = discounts(old_price,rate)
8 print('打折后的价格是:',new_price)
----> 9 print('这里试图打印局部变量final_price的值:',final_price)
NameError: name 'final_price' is not defined
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
def discounts(price,rate):
final_price = price * rate
#在这里python会重新定义一个名字相同的局部变量
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)
请输入原价:100
请输入折扣率:0.8
这里试图打印局部变量old_price的1值: 50
这里试图打印全局变量old_price的2值: 100.0
打折后的价格是: 80.0
8. global
count = 5
def MyFun():
count = 10
print(10)
MyFun()
print(count)
10
5
#要在函数内部修改count
count = 5
def MyFun():
global count
count = 10
print(10)
MyFun()
print(count)
10
10
9. 内嵌函数
def fun1():
print('fun1正在被调用')
def fun2():
print('fun2正在被调用')
fun2()
fun1()
fun1正在被调用
fun2正在被调用
10. 闭包
#如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量
#进行引用,那么内部函数就被认为是闭包(closure)。
def FunX(x):
def FunY(y):
return x*y
return FunY
i = FunX(8)
print(type(i))
print(i(5))
print(FunX(8)(5))
<class 'function'>
40
40
def Fun1():
x = 5
def Fun2():
#这里由于外层作用域已经定义了x,
#所以此时系统会重新定义局部变量x,
#而又未次局部变量赋值,所以该x = x + 2会报错
x *= x
return x
return Fun2()
Fun1()
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-32-d753abbbddb3> in <module>()
9 return Fun2()
10
---> 11 Fun1()
<ipython-input-32-d753abbbddb3> in Fun1()
7 x *= x
8 return x
----> 9 return Fun2()
10
11 Fun1()
<ipython-input-32-d753abbbddb3> in Fun2()
5 #所以此时系统会重新定义局部变量x,
6 #而又未次局部变量赋值,所以该x = x + 2会报错
----> 7 x *= x
8 return x
9 return Fun2()
UnboundLocalError: local variable 'x' referenced before assignment
#python2解决,利用列表等容器
def Fun1():
#将其定义为列表
x = [5]
def Fun2():
x[0] *= x[0]
return x[0]
return Fun2()
Fun1()
25
#python3解决,利用关键字nonlocal
def Fun1():
x = 5
def Fun2():
nonlocal x
x *= x
return x
return Fun2()
Fun1()
25
Python学习笔记——Python 函数的更多相关文章
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- Python学习笔记11—函数
建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习笔记系列——函数
今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...
- Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
随机推荐
- webpack-merge
配置分离 随着我们业务逻辑的增多,图片.字体.css.ES6以及CSS预处理器和后处理器逐渐的加入到我们的项目中来,进而导致配置文件的增多,使得配置文件书写起来比较繁琐,更严重者(书写特定文件的位置会 ...
- @AUTORELEASEPOOL
Swift 在内存管理上使用的是自动引用计数 (ARC) 的一套方法,在 ARC 中虽然不需要手动地调用像是 retain,release 或者是 autorelease 这样的方法来管理引用计数,但 ...
- 【原】Python基础-函数
#不定长参数,这里prams是一个元组集合def print_params(*prams): for e in prams: print(e) print(prams) #输出('xxx', (1, ...
- idea创建Web项目(基于Maven多模块)
简述:通常我们开发的项目结构是由多个modules项目组合而成,并且由有个parent的maven项目整体管理.废话少说,直接进入创建过程. 创建parent项目 1.打开idea工具,按照下图操作, ...
- SpringBoot-自动装配对象及源码ImportSelector分析
SpringBoot框架已经很流行了,笔者做项目也一直在用,使用久了,越来越觉得有必要理解SpringBoot框架中的一些原理了,目前的面试几乎都会用问到底层原理.我们在使用过程中基本上是搭建有一个框 ...
- nrm切换npm包源
nrm可以随时切换npm包的源 npm install -g nrm 安装nrm完成 查看nrm源 nrm ls 切换源 npm use npm #也可以切换成其他源
- Fiddler is not capturing web request from Firefox
Fiddler is not capturing web request from Firefox You can also get the FiddlerHook plug in for Firef ...
- 在从myql服务器上 取消主从关系和重新构建主从关系
取消主从关系 mysql -uroot -p mysql>show slave status\G; 查看主库是否为之前的ip mysql>change master to master_h ...
- pecl和pear 的区别和联系
Pear:是PHP的扩展代码包,所有的扩展均以PHP代码的形式出现,功能强大,安装简单,甚至可以改改就用.使用的时候,要在代码中进行Include才能够使用. Pecl:是PHP的标准扩展,可以补充实 ...
- Docker学习知识图
这个图更能明白他们之间的关系 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论