函数初始:

  什么是函数?

    函数:是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

    一个函数封装一个功能。

    1,减少重复代码。

    2,增加代码的可读性。
函数的结构

def my_len():      # def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。
s = 'abcdefg' # 函数体
count = 0
for i in s:
count += 1 my_len() # 调用函数

 def 函数名():
  函数体
  函数的返回值

函数人返回值:  return

return 有两个作用

1、结束整个函数

2、给函数的执行者(调用者)返回值

  return  单个值 ------>  单个值(数据类型不变)

  return 多个值 ----> 返回一个元组(多个值)

#函数定义
def mylen():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
return length # 将length返回给 mylen() #函数调用
str_len = mylen()
print('str_len : %s'%str_len)

1、不写return返回None,return后面不加返回值,也返回None

  第一个函数没写return,返回一个None

2、return可以返回一个值

  

#函数定义
def mylen():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
return length #函数调用
str_len = mylen()
print('str_len : %s'%str_len)

3、return可以返回多个值,多个值以元组的形式返回,可以用多个值来接受

def sb():
return 1, 2, 3, 4 reg = sb()
print(reg) # 以元组的形式返回一个值 (1, 2, 3, 4)
a, b, c, d = reg # 用 a,b,c,d 接收(1,2,3,4)
print(a, b, c, d)

函数的参数

def date(a, b):  # 函数的定义:形参,形式参数
print(a, b)
print('打开探探')
print('附近的人')
print('左滑一下')
print('右滑一下')
print('锁定目标,联系')
print('相约...') x = 2
y = 3 # 把x,y的值传给a,b。然后打印a,b
date(x, y) # 函数的执行者:实参,实际的参数

实参分三种:

  1、位置实参  :    从左至右一一对应

  2、关键字实参 :  一一对应,顺序随便

  3、混合传参:   位置参数一定要在关键字参数前面

# 混合传参的例子
def date(meetplace, sex, positon, soft):
print('打开手机')
print('打开%s软件,搜索%s附近的%s' % (soft, positon, sex))
print('左滑一下')
print('右滑一下')
print('锁定目标,联系')
print('相约%s' % (meetplace)) date('酒吧', soft='微信', sex='girl', positon='深圳南山区')
# '酒吧' 是位置参数,需要放在所有关键字参数的前面

形参也分三种:

  1、位置形参:    从左至右,一一对应

  2、默认形参:   放在位置参数后面

  3、万能形参:  接受实参角度所有的位置参数,关键字参数    (*args, **kwargs)

默认形参

def date(meetplace,positon,soft,sex='girl'):   # 默认形参要 sex=girl 在位置形参后面
print('打开手机')
print('打开%s软件,搜索%s附近的%s' % (soft, positon, sex))
print('左滑一下')
print('右滑一下')
print('锁定目标,联系')
print('相约%s' %(meetplace))
date('酒吧',soft='微信',positon='深圳南山区',sex='laddyboy')

默认形参的陷阱

def func1(a, l1=[], l=[]):
l.append(a)
return l # print(func1(666)) # [666]
# print(func1(22)) # [666,22] # 陷阱 传22打印的却是 [666,22]
print(func1(33, l=[], l1=[1])) # [33] 实参传给默认形参时,实参可以是位置实参或者关键字实参

万能参数 :两个形参参数,接受我所有的位置参数,关键字参数 (*args , **kwargs)
def kw(*args, **kwargs):
print(args)
print(kwargs) kw(1,2,3,4,5,6,'你好',sex='man',place='白石洲') # 打印结果
# (1, 2, 3, 4, 5, 6, '你好')
# {'sex': 'man', 'place': '白石洲'}



三元运算

# 写一个函数,完成一个功能: 给函数传入两个数字对象,将较大的数字返回给函数的调用者。
def max1(a, b):
return a if a > b else b # if a>b 输出 a else b ret = max1(100, 10)
print(ret)

day 08 函数的更多相关文章

  1. Linux - 简明Shell编程08 - 函数(Function)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash function Check( ...

  2. Shell - 简明Shell入门08 - 函数(Function)

    示例脚本及注释 #!/bin/bash function Check() # 使用function定义函数 { Say # 通过函数名直接调用函数 if test $1 then return 0 # ...

  3. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  4. 将matlab中数据输出保存为txt或dat格式

    :FID= FOPEN(filename,permission) 用指定的方式打开文件 FID=+N(N是正整数):表示文件打开成功,文件代号是N. FID=-1            : 表示文件打 ...

  5. Shell - 简明Shell编程

    本文是对Shell脚本编程的总结和回顾,所有涉及的脚本均已做了基本的调试和验证. [toc] 测试环境信息 [root@CentOS7 ~]# uname -a Linux CentOS7 3.10. ...

  6. TCP socket 多线程 并发服务器(发送)与客户端(接收)

    实现功能:Ubuntu上通过多线程实现服务器并发给客户端发送文件,携带包头,根据包头信息命名新文件.适用于短连接. 问题小结: 01. 调用嵌套在结构体中的结构体char 数组成员时,需要动态分配内存 ...

  7. 20160227.CCPP体系详解(0037天)

    程序片段(01):01.一对一模式.c+02.中介者模式.c+03.广播模式.c 内容概要:事件 ///01.一对一模式.c #include <stdio.h> #include < ...

  8. Shell - 简明Shell入门

    本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...

  9. Python全栈开发第二期课表

     day01-python 全栈开发-基础篇                 01 开课介绍 01:55:13 ★  02 开课介绍02 01:28:31 ★  03 开课介绍03 00:22:55 ...

随机推荐

  1. R-CNN 学习记录

    CNN是一个运用卷积神经网络进行图片分类的开山之作.RCNN是第一个把图片分类和目标检测连接起来的作品. RCNN主要解决的问题是: 1.怎样用深度神经网络进行目标定位:2.怎样用小批量的标注数据来训 ...

  2. Linux Shell 内建命令:冒号(:)

    https://blog.csdn.net/honghuzhilangzixin/article/details/7073312/ 在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据 ...

  3. ARP工作过程、ARP欺骗的原理和现象、如何防范ARP欺骗

      地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议. 下面假设在一个局域网内,主机A要向主机B发送IP数据报. ARP ...

  4. 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 22.多线程.md

    目录 1.线程的创建和启动 1.1继承Thread类创建线程 1.2继承Runnable接口实现创建线程 1.3使用Callable和Future创建 2.控制线程 2.1 Thread类的join方 ...

  6. ArcGIS案例学习笔记-聚类点的空间统计特征

    ArcGIS案例学习笔记-聚类点的空间统计特征 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于聚集点,根据分组字段case field,计算空间统计特征 ...

  7. Ubuntu下好的PDF阅读器介绍

    我们经常要学习,看论文,如果有好的PDF阅读器,可以做笔记,对以后查看和记忆是有帮助的 这里推荐用:okular 这里是基本操作哦 1: 安装 sudo apt-get install okular ...

  8. SAP 使用

    SAP 提供多种方法查找系统内的事务代码 1. 使用SE11查看存储事物代码的表:TSTC 或者TSTCT TSTC: 存有事务代码,程序名称,屏幕号码等字段 TSTCT: 存有语言代码,事务代码,事 ...

  9. 编译模块的Makefile解析

    Makefile # if not defined KERNELRELEASE, command is running from command line,need invoke kbuild sys ...

  10. 基于docker的wekan部署

    镜像地址: https://hub.docker.com/r/wekanteam/wekan/ wiki: https://github.com/wekan/wekan/wiki#Developmen ...