函数

定义方式:

def func():
"这里面写函数的描述"
这里写代码
return x #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值

实例

def fun1():
"这里是测试"
print('这是第一个函数')
return 0 fun1() #调用函数

函数传参

def test(x,y,z):
print(x)
print(y)
print(z) test(3,3,5) #这样传的参数叫做位置参数, 位置是一一对应的
test(x=5,y=4,z=3) #这样传的参数叫做关键参数, 位置可以不用一一对应

这里需要注意的是,关键参数是不能写在位置参数前面的。
例如 test(x=4,5,5) 这样x是用了关键参数,y和z用了位置参数,这样就是错的。
但是 test(3,y=4,z=6) 这样位置参数x在关键参数y和z的前面,这样就是可以的。
同理 test(3,z=6,y=4) 这样也是可以的。

参数组
如果我要传入的参数数量不固定,就在形参列表里写 *变量名 来实现。

def test(*args):
print(args) #打印出来的是一个元组 test(3,3,5) #这样我传多少个参数都没问题了
test(*[3,4,5,6,6,4]) #这是第二种传值方式

传入字典

如果我想传入字典就在形参的位置用 **变量名 来实现

def test(**args):
print(args) #打印出来的是一个字典 test(name='vector',age=3)

高阶函数(满足下列条件之一就是高阶函数)

a:把一个函数名当作形参传给另一个函数(在不修改被装饰函数源代码的情况下修改其功能,但是调用方式变了)

def bar():
print('this is bar...')
bar()
print('----------------------------------')
def test(func): #在这里增加了功能
print(func)
test(bar) #但是这里修改了调用方式

b:返回值中包含函数名(不修改函数的调用方式,而修改函数功能)

def bar():
print('this is bar...')
bar()
print('----------------------------------')
def test(func): #在这里增加了功能
print(func)
return func #这里返回了函数地址
bar = test(bar) #将函数地址赋给一个变量,该变量和传入函数同名
bar() #这个变量加上括号,就可以当函数用了,同时又没有修改函数的调用方式

嵌套函数

x = 1
def test1():
def test2():
def test3():
x = 3
print(x)
test3()
test2()
test1()

像这样在一个函数里面再定义一个函数就叫做嵌套函数。

Python学习之路5 - 函数的更多相关文章

  1. Python学习之路6☞函数,递归,内置函数

    一python中的函数 函数是逻辑结构化和过程化的一种编程方法. python中函数定义方法: def test(x): "The function definitions" x+ ...

  2. Python学习之路:函数传递可变参数与不可变参数

    函数传参的方法: 太基础了,8说了 直接上重点 一.可变参数的传递 可变参数有:列表.集合.字典 直接上代码: a = [1, 2] def fun(a): print('传入函数时a的值为:', a ...

  3. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  4. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  5. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  6. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

  7. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  8. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  9. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

随机推荐

  1. Linux中JDK的安装步骤

    1.下载jdk安装包rpm格式安装 http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa8 ...

  2. Bigdata--hadoop系列安装

    Date:20180827 Monday 目前市场hadoop主流版本是2.7.x系列,下面我们就以hadoop-2.7.3为例进行安装 安装前准备: 1.操作系统:cetos(6和7) 2.java ...

  3. Linux重启命令介绍

    下面介绍在 Linux 操作系统中重启和关闭相关的命令:shutdown.reboot.init.halt.poweroff.systemctl,你可以根据需要来选择适合的 Linux 命令关闭或重新 ...

  4. inotify和epoll

    参考EventHub.cpp 1.初始化inotify int mINotifyFd = inotify_init(); 2.将要监测的目录添加到inotify int result = inotif ...

  5. python 基础练习题, 陆续添加中

    判定用户输入数字是否为闰年 闰年的定义:能够被4整除的年份 #input是自定义输入内容的函数 year = input("请输入年份数字:") #xxx.isdigit方法是检测 ...

  6. Scala学习笔记(四)—— 数组

    定长数组Array 定义定长数组用Array,有如下几种方法: 初始化一个长度为8的定长数组,其所有元素默认值均为0 scala> new Array[Int](8) res0: Array[I ...

  7. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

  8. xshell5连接虚拟机的小问题处理

    1.首先确保虚拟机是桥接状态,然后在虚拟机下用ifconfig查看ip地址(当然是默认你虚拟机下是linux) 2.确保虚拟机安装了ssh...安装openssh-server: 对应的sudo ap ...

  9. 西安Uber优步司机奖励政策(12月28日到1月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. 【机器学习笔记】自组织映射网络(SOM)

    什么是自组织映射? 一个特别有趣的无监督系统是基于竞争性学习,其中输出神经元之间竞争激活,结果是在任意时间只有一个神经元被激活.这个激活的神经元被称为胜者神经元(winner-takes-all ne ...