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 函数的更多相关文章

  1. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  2. Python学习笔记11—函数

    建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...

  3. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

  4. Python学习笔记 - day6 - 函数

    函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...

  5. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  6. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  7. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  8. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  9. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

  10. python学习笔记(4)--函数

    1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...

随机推荐

  1. Co-Clustering_Reproducing

    调包一时爽,复现马上躺. Co-Clustering 注意右上角的:"Edit on GitHub",一开始疯狂吐槽没有源码,复现得非常难受,今天刚做完GM05中Algotirhm ...

  2. perl 语法速查 | 模块安装

    perl -MCPAN -e shell install Bio::SeqIO 或者直接perl -MCPAN -e 'install Excel::Writer::XLSX' 用cpan装不上,编译 ...

  3. Cookie的使用(js-cookie插件)

    js-cookie 官方文档 里面就详细的介绍了es5怎么引用,以下是ES6以上的用户 一.安装 npm install js-cookie --save 二.引用 import Cookies fr ...

  4. C#-片段:外侧代码

    ylbtech-C#-片段:外侧代码 1.返回顶部 ·#if #if true #endif ·#region #region MyRegion #endregion ·namespace names ...

  5. Swift_IOS之提示框UIAlertController

    import UIKit class ViewController: UIViewController ,UIActionSheetDelegate{ @IBAction func btn1(_ se ...

  6. PorterDuffXfermode之PorterDuff.Mode.MULTIPLY

    package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...

  7. 自定义ObjectAnimator属性实现

    package com.loaderman.customviewdemo; import android.animation.ObjectAnimator; import android.graphi ...

  8. CerntOS7下搭建git服务器

    (1).安装git yum安装git,需要ssh的支持.某些版本需要安装git-core,那才是服务器. [root@youxi1 ~]# yum -y install git 创建git用户 [ro ...

  9. 123457123456#0#-----com.threeapp.MakerHanBao01----儿童汉堡制作游戏

    ----com.threeapp.MakerHanBao01----儿童汉堡制作游戏

  10. 普罗米修斯Prometheus监控安装

    普罗米修斯Prometheus监控安装 架构: 服务端:192.168.0.204 客户端:192.168.0.206 环境准备:所有节点安装go 语言环境 rz go1.12.linux-amd64 ...