函数式编程最重要的是增强代码的重用性和可读性

1 def 函数名(参数):
2
3 ...
4 函数体
5 ...

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

以上要点中,比较重要有参数和返回值:

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

def 发送短信():

    发送短信的代码...

    if 发送成功:
return True
else:
return False while True: # 每次执行发送短信函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作 result = 发送短信()
if result == False:
记录日志,短信发送失败...

2.参数

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数:

普通参数的传递并没有个数和数据类型的限制,可以传递字符串,数字,列表和字典。也不限定个数,需要注意的是:函数需要多少参数,调用的时候就要按照它定义时的顺序和数据类型传递过去。

 1 def argtest(name,age,fruit_lst,hobby_dic):
2 print 'Hello,me name is %s,i\'m %d year\'s old'%(name,age)
3 print 'My favorite fruits are : %s'%'.'.join(fruit_lst)
4 print 'My hobbies:'
5 for hobby in hobby_dic:
6 print '\t%s'%hobby_dic[hobby]
7
8 lst = ['apple','banana','watermelon']
9 dic = {'hobby one':'teaism','hobby two':'sing'}
10 argtest('Eva_J',18,lst,dic)

输出的内容:
Hello,me name is Eva_J,i'm 18 year's old
My favorite fruits are : apple.banana.watermelon
My hobbies:
 teaism
 sing

默认参数:
默认参数是给参数加上一个默认的值,但我们调用函数的时候,如果传递了这个参数,那么使用我们传递过来的值;如果不传则使用默认的值,默认参数可以有多个,但是必须放在所有参数的最后。当我们有多个默认参数的时候,调用函数的时候可以使用参数名指定其中的某一个参数,以保证参数能准确的传递给被调用的函数。

1 def argvtest(argv1,argv2 = 'aaa',argv3 = 'bbb'):
2 print 'argv1:',argv1
3 print 'argv2:',argv2
4 print 'argv3:',argv3
5
6 argvtest('a1',argv3 = 'a2')

输出的内容:
argv1: a1
argv2: aaa
argv3: a2

动态参数:
def func(*args) 接受多个参数,内部自动构造元组,序列前加*,避免内部构造元组
def func(**kwargs) 接收多个参数,内部自动构造字典,序列前加**,直接传递字典
def func(*args,**kwargs):接受多个参数,既可以自动构造元组,又可以自动构造字典。

下图从左至右展示了自动构造元组,自动构造字典及前两者综合的参数传递方式:

python 学习 ---函数(带参数)的更多相关文章

  1. python学习——函数及其参数

    函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.严格来说python只有函数,没有过程,人们理解的函数都是带有return的,而过程 ...

  2. Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)

    Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...

  3. Python调用函数带括号和不带括号的区别

    1.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成 2.带括号(此时必须传入需要的参数),调用的是函数的return结果,需要等待函数执行完成的结果 如果函数本 ...

  4. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  5. Python进阶-函数默认参数

    Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...

  6. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  7. 深入理解python中函数传递参数是值传递还是引用传递

    深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

  8. Python中函数传递参数有四种形式

    Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

  9. 讲讲python中函数的参数

    python中函数的参数 形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 ...

  10. Python学习-函数,函数参数,作用域

    一.函数介绍 函数定义:函数时组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 我们已经知道python提供了许多内建函数,print(), type()等.我们也可以自己创建函数,这被叫 ...

随机推荐

  1. adb命令启动报错Error: unknown command '-start'怎么办

    大家好,每天记录小问题.水滴石穿. 今天介绍一个从0开始启动app应用的app命令 adb shell am -start -w -n 包名/启动名 第一次运行时报错 怎么办呢, 这边使用的是雷电模拟 ...

  2. Salesforce LWC学习(二十) CLI篇:新版本不支持Audience解决方案

    本篇参考:https://github.com/forcedotcom/cli/issues/470 https://developer.salesforce.com/docs/atlas.en-us ...

  3. vue使用keep-alive出现的的activated和deactivated生命周期

    <keep-alive>包裹的动态组件会被缓存,它是一个抽象组件,它自身不会渲染一个dom元素,也不会出现在父组件链中.当组件在 <keep-alive> 内被切换,它的 ac ...

  4. python之pdf转换操作 PyMuPDF库学习

    1. 资料链接github地址: pymupdf/PyMuPDF: Python bindings for MuPDF's rendering library官方手册: PyMuPDF Documen ...

  5. python之算术运算符复习

    运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符 ...

  6. Spring注解系列——@PropertySource

    在Spring框架中@PropertySource注解是非常常用的一个注解,其主要作用是将外部化配置解析成key-value键值对"存入"Spring容器的Environment环 ...

  7. [智能制造] 如何利用生产软件(MES)进行生产信息收集?

    1 如何保证生产管理软件所收集信息的准确性? 1.1 当前制造企业使用MES系统收集信息的现状 原以为使用了MES生产管理系统后,会得到稽核员的肯定. 但没想到,在实际的稽核过程中,稽核员还是发现目前 ...

  8. 在IIS 搭建FTP站点

    最近在项目中需要用到FTP,需要将生成的文件通过FTP上传网站. 在此记录下. FTP SSL设置,需要允许SSL连接. FTP 身份验证,匿名身份验证需要启用. FTP 授权规则,如果没有特殊情况允 ...

  9. subprocess,哈希,日志模块

    hashlib模块: # 1. 先确定你要使用的加密方式: md系列,sha系列 md5 = hashlib.md5() # 指定加密方式 # 2. 进行明文数据的加密 data = 'hello12 ...

  10. 微软出品的UI自动化测试工具Playwright(三)

    微软出品的UI自动化测试工具Playwright(三) 网址 说明 https://playwright.dev/ 官网首页 https://playwright.dev/python/docs/in ...