函数

一。定义  def  关键字  函数名():

      函数体

函数 ---- 封装#def 关键字
# #定义后的函数就像变量 不调用是不执行的
# #函数名() ==函数的调用
def code():
print('code a new!')
code()
# 局部变量
函数的调用:
  函数名+()调用函数的时候不在缩进内,必须顶行写
def hanshu():
  hanshu...
hanshu()或者
if True:
  hanshu()

二。执行

#函数的执行过程
def make(): #第一步 之后没了
print(1)
make # 内存空间 当➕ ()时执行
print(make)
make()
print(make())# 打印函数为空
#定义——调用——函数体的代码

三。函数的返回值

#return 的作用:
#1.没有时 返回 None return 没值时, 返回 None
#2.return 有值时,返回
#3.传一个内容 则本身 传多个是 一个元组
#4.下面的内容不执行
#5.执行到此 函数结束
def back():
print('f')
return 'a','b'    # 下面代码不执行, break 且结束了这个函数
print('能打印吗?')
return 1
ret = back() # return 多个 只有第一个
print(ret) #('a', 'b') 多个的话为元组 返回值 不写内容返回None 不写return 也是None
1.没有返回值      写了return 没有返回值
都默认返回None
2,一个返回值,返回本身
多个返回值,返回的是一个元组
3,return 下面的代码不执行,并且结束这个函数(if缩进里面不这样,同上)
# 返回值
def make():
print('')
return '它'*2
return 2*45print(id(ret),id(make()))#地址一样 就是同样的print(ret)

    是赋值?

ret =  make()  因为他俩一样
print(ret) = print(make())
make() 函数执行
ret 函数执行 一样的

四。函数的参数  形参和实参


#函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数
形参,函数定义的时候
位置参数 a,b 传参的时候一一对应
默认参数 a =1 在定义的时候已经定义好了
实参,函数调用的时候
位置参数 1,2 传参的时候一一对应给形参
关键字参数a = 1 通过形参的名字指定传值
混合:
形参def func(a,b,c,f=1)
实参func(1,2,3,f=2)
传参,将实参返回形参的过程
  #位置参数 > 关键字

补充内容 以后会用到    三元运算符

不确定赋值的内容时, 使用!
a if a>b else b
五。出错总结:
#不对  多元素 没赋值TypeError: make() missing 1 required positional argument: 'c'

#练习

#函数名+()  不管在什么位置都是在执行函数
# print() 到后一个括号才算执行吗?
def make():
print(1)
print(2)
print(3)
print(make(),make()) # == make() make() print(make(),make())
def make(char,addr,alpa): #形参 形式上的参数 char =??
print(f'{char}')
print(char)
print(addr)
print('%s'%char)
make('word',[],'aaa') # 实参 形给了实 #错误 半个黄括号 有的变量没给
#判断那个数大的程序:
def da(a, b):
if a>b:
pass
else:
a= b
return a
print(da(10,9)) def da(a, b):
if a>b:
return a
else:
return b
print(da(1,1))# 返回 条件成立的结果 不成立的结果
c = a if a>b else b#倒序程序
li = [1,2,3,65]
la = []
def reverses(a):
for i in range(len(a)-1,-1,-1):
la.append(li[i])
return la
print(reverses(li)) li = [1,2,2,5,3,65]
def func(a):
print(a[::-1])
func(li)
#对
# def make(a,b,d, c=1):
#不对
# def make(a, b, c=1,d):#SyntaxErr
#不对 多元素 没赋值TypeError: make() missing 1 required positional argument: 'c'
#循环输入函数 程序
def fuzhi(name,age,sex ='男' ):
print(name,age,sex)
while 1:
life_list = input('name,age,sex').split(',')
if len(life_list)>2:
a,b,c= life_list
fuzhi(a,b,c)
else:
a,b = life_list
fuzhi(a,b)
#函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数 def fun(a,b,c,d=1): #位置+形参 (位置+默认)混合形参
print(a,b,c,d)
fun(1,2,3) #位置参数
fun(1,3,4,d=4) #实参 (位置+关键字) 混合实参 替换了
# fun(d=4, 1, 3, 4) #不对 #位置参数 > 关键字
# open('liu','w','utf-8')# 不对 因为‘utf-8’是 第四个
open('liu','w',encoding='utf-8')#所以
												

python学习 day08 (3月13日)----函数的更多相关文章

  1. Python学习日志9月13日

    昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...

  2. python学习 day09 (3月14日)----函数

    一.函数的进阶 1.1 动态参数 1.2* ** 1.3*args , **kwargs 1.4 函数的注释 1.5名称空间 1.6函数的嵌套全局变量 : 贴边写的局部变量 : 不是贴边写的. ''' ...

  3. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  4. Python 学习日志9月20日

    9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...

  5. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  6. Python 学习日志9月21日

    9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...

  7. python学习 day11 (3月16日)----(生成器内置函数)

    1生成器 1生成器的本质 一定是迭代器(反之不一定(用send(生成器特有方法)验证))2生成器是可以让程序员自己定义的一个迭代器3生成器的好处,节省内存空间4生成器的特性,一次性的,惰性机制,从上往 ...

  8. python学习 day12 (3月18日)----(装饰器内置函数)

    读时间函数: # import time # def func(): # start_time = time.time() # 代码运行之前的时间 # print('这是一个func函数') # ti ...

  9. Python学习日志9月16日

    刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...

随机推荐

  1. yaml文件 *.yml 写法简介

    YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) 一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言. 适应场景 脚本语言: ...

  2. c++ - Linking problems due to symbols with abi::cxx11?

    看错误内容: /data/projects/LipReadingSDKGPU/lib/cwlibs/libLipReading.so: undefined reference to `tensorfl ...

  3. 【转】 UI自动化测试的关注点

    我发现了,大家极度关心自动化测试,尤其是UI自动化测试,虽然现在作为专项测试,离开这些越来越远了,但总能遥想以前,我总能想起自己做nokia的WindowsLive的ui自动化,做web的自动化测试, ...

  4. jackson java对象和json对象的互相转换

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...

  5. FortiGate基本信息

    1.介绍 FortiGate是全新的下一代防火墙,在整个硬件架构和系统上面都有新的设计,在性能和功能上面都有了很大提升,具有性能高.接口丰富.功能齐全.安全路由交换一体化.性价比高等优势. Forti ...

  6. 将tomcat做成windows服务

    @参考文章 大致步骤: 1,配置环境变量(选读) 2,安装 3,卸载(选读) 配置环境变量: 这块不是必须的.我不喜欢给tomcat配置环境变量,默认即可.如需要配置可看参考文章,也可参考我之前的文章 ...

  7. docker搭建lnmp(一)

    因为安装过程中涉及到一些修改配置文件的步骤,由于刚尝试不太会,所以这里都是通过安装好后,进入容器修改配置,最后退出重启容器. 目录结构 docker ├── mysql │   └── dockerf ...

  8. js Map和Set

    Map Map是一组键值对的结构,具有极快的查找速度.JavaScript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也是非常合理的.为了解决这个问题,最新的ES6 ...

  9. C# 获取 存储过程 返回值

    C#获取存储过程的返回值,这一方法,总是容易忘,今天给贴出来,以方便下次使用 存储过程: CREATE  PROCEDURE [dbo].[Proc_GetInfo]     ),     ) out ...

  10. IIS 域名 带参数 设置重定向

    IIS里面设置重定向后,经常会出现,从百度快照里直接打不开的情况. 可以在IIS里面设置重定向的时候,把参数加上,格式如下: http://www.***.com%S%Q