函数基本框架如下(【】中的内容表示是或选的,可以不写):
def 函数名(参数):
   【'''函数说明文档'''】
    函数主体
   【return 返回对象】

函数小例子

#我们先定义一个函数
def find_max(series): '''查找一个序列中最大值''' the_max = series[0]
for j in series:
if j >= the_max:
the_max = j return the_max #调用函数
series = [1,20,23,1111,222,-10]
print('序列最大值:',find_max(series))

输出:序列最大值: 1111

默认参数的使用

def pos_neg(x=1):
if x > 0:
print(x,'是正数')
else:
print(x,'不是正数') pos_neg() #这里没有传入参数x,仍然可以运行,因为在未传入参数的情况下,默认x参数为1

输出:1 是正数

pos_neg(-10)  #当然自己也是可以传入参数

输出:-10 不是正数

 事实上,在调用很多python函数时,我们都使用了默认的参数设置
 
 

可变参数

def summation(*series):    #注意这里参数前面的有一个* 表示的series这个参数是可变参数
'''求一个序列元素的加和'''
sum = 0
for i in series:
sum += i
return sum print(summation(1,2,3,4,5,6,7)) #可变参数的设置 使得我们可以传入任意个参数 函数调用时会自动组装为一个tuple

输出:28

如果不设置为可变参数的话,需要传入一个序列形式的参数

def summation(series):
'''求一个序列元素的加和'''
sum = 0
for i in series:
sum += i
return sum print(summation([1,2,3,4,5,6,7]) )

输出:28

关键词参数

def info_insert(name, age, university, **other):
print('姓名:',name,'年龄:',age,'学校:',university,'其他信息:',other)

注意参数**other,这个参数允许我们传入任意个含参数名的参数,这些关键词参数在函数调用时会自动组装为一个dict
例如我们在做信息录入时,姓名,年龄,学校是必填信息,而其他信息是选填的,这时候就可以使用关键词参数

info_insert('娜塔莎 罗曼诺夫',99,'圣地亚哥大学')
输出:
姓名: 娜塔莎 罗曼诺夫 年龄: 99 学校: 圣地亚哥大学 其他信息: {}
info_insert('娜塔莎 罗曼诺夫',99,'圣地亚哥大学',性别='女',工作='特工')

输出:

姓名: 娜塔莎 罗曼诺夫 年龄: 99 学校: 圣地亚哥大学 其他信息: {'性别': '女', '工作': '特工'}

混合参数

在python函数定义中,可以用必选参数,默认参数,可变参数,关键词参数。注意这些参数的定义顺序为:必选参数,默认参数,可变参数和关键词参数

def info_insert(name, age, married='未婚',*schools, **kw):
print('姓名:',name,'年龄:',age,'婚姻状况:',married,'就读学校:',schools,'其他信息:',kw) info_insert('娜塔莎 罗曼诺夫',99)

输出:

姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 未婚 就读学校: () 其他信息: {}

info_insert('娜塔莎 罗曼诺夫',99,'已婚','浙江大学','上海财经大学')

输出:

姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 已婚 就读学校: ('浙江大学', '上海财经大学') 其他信息: {}

info_insert('娜塔莎 罗曼诺夫',99,'已婚','浙江大学','上海财经大学',性别='女',工作='特工')

输出:

姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 已婚 就读学校: ('浙江大学', '上海财经大学') 其他信息: {'性别': '女', '工作': '特工'}

递归函数

递归函数的含义是在函数定义过程中,会调用函数本身

def factorial(n):
'''计算n的阶乘'''
if n == 1:
return 1
else:
return n*factorial(n-1) factorial(5)

输出:120

匿名函数——lambda函数

lambda函数的基本格式为: lambda 参数: 表达式
匿名函数定义更为简便(控制在一行),有些简单的函数可以用它来写,或者作为复杂函数的组成部分

s = lambda x:print(x,'大于 1') if x>1 else print(x,'小于 1')
s(10)
s(-10)

输出:

10 大于 1
-10 小于 1
 

8--Python入门--函数的更多相关文章

  1. Python入门-函数的使用到程序的公布安装

    Python入门-函数的使用到Python的公布安装 本文主要适合有一定编程经验,至少掌握一门编程语言的人查看. 文中样例大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的总体使用方法 ...

  2. Python入门 - 函数方法

    本节主讲python函数的基本用法,主要包括传递参数.匿名函数和变量作用域. 一.传递参数 python除了传递必需参数外,还可以传递默认参数,不定长参数和关键字参数. 1. 传递必需参数 def m ...

  3. Python入门-函数进阶

    昨天我们简单的了解了函数的定义,调用,以及传参,其实还有一个更重要的传参:动态传参,让我们继续昨天没有说完的,以及今天我要分享的东西. 一.动态传参 之前我们说过了传参,如果我们需要给一个函数传参,而 ...

  4. Python入门-函数

    定义:将一组语句的集合通过一个名字(函数名)封装起来,要先执行这个函数,只需要调用其函数名即可.特性:1.减少重复代码2.使程序变的可扩展3.使程序变的易维护 函数参数:形参和实参形参:位置参数,关键 ...

  5. python入门-函数(二)

    1 函数传递参数 def greet_users(names): """向列表中的每个用户都发处问候""" for name in name ...

  6. python入门-函数(一)

    1定义函数并且调用  注释语句""" """ def greet_user(): """显示简单的问候语&qu ...

  7. python入门学习:7.函数

    python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数   使用关键字def ...

  8. python之函数入门

    python之函数入门 一. 什么是函数 二. 函数定义, 函数名, 函数体以及函数的调用 三. 函数的返回值 四. 函数的参数 五.函数名->第一类对象 六.闭包 一,什么是函数 函数: 对代 ...

  9. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  10. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

随机推荐

  1. ogg跳过某个RBA

    1.从库复制进程报如下错误 *************************************************************************              ...

  2. SSM-网站后台管理系统制作(2)---SSM基本工作原理

    SSM基本工作原理 讲解网站:https://www.w3cschool.cn/wkspring/dcu91icn.html 构建基本工作环境: mysql eclipse(tomcat8.0) Hb ...

  3. 剑指offer(9)变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析 根据上一个题目可以知道,青蛙只跳1或2可以得出是一个斐波那契问题,即 ...

  4. 用bytomswap进行“跨链”资产转换

    bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台.我们可以在上面通过自己现有的资产在比原上发行资产.然后达到资产转换的目的. 一. 以太币资产转换成比原上的资产 首 ...

  5. Learning-Python【21】:Python常用模块(4)—— re、logging、hashlib、subprocess

    re 模块:与正则相关的模块 在使用 re 模块之前,需要先了解正则表达式(regular expression),描述了一种字符串匹配的模式(pattern),可以用来检查一个字符串是否含有某个子字 ...

  6. 【IOS】#import和#include有什么区别,@class呢,#import<>跟#import ""有什么区别?

    1.#import是object-c导入头文件的关键字,#include是C/c++导入头文件的关键字,使用#import导入头文件会自动只导入一次,不会重复导入. 2.@class是告诉编译器某个类 ...

  7. robot framework学习五——AutoltLibrary库

    安装中遇到的问题: 安装好了AutoItLibrary,但是导入到RIDE后,仍然红色显示 搜索了下解决办法,说要安装下autoit-v3-setup.exe https://www.autoitsc ...

  8. CSP中的选择

    P ∩ Q (P or Q) 由机器做出选择,环境无法控制,设计软件时只实现一个即可 P[]Q一般选择(Genral choice) 环境可以控制选择P或Q,若P不可接受这个动作,则执行Q,若Q不可接 ...

  9. 清晰的教你如何将 Maven 项目上传至 中央仓库以及版本更新

    项目中总会依赖一些大牛的开源库,例如 Android 开发 通过以下方式就可以方便的引入库.那么如何将我们自己的库也能这样来使用呢?下面我们将详细的讲解每一步的过程: implementation ' ...

  10. Flask离线文档 --技术文档

    1.预览 2.文档下载 链接:Flask离线文档下载(v1.0.10)提取码:0x0x