函数的最主要的目的:封装一个功能

函数的优点:

减少代码的复用率, 增加代码的阅读性

def my_len(arvg):  # arvg 形参  my_len函数名,应该具有代表性,让你一看就明白
# 函数体
count = 0
for i in arvg:
count += 1
return count
print(my_len(s)) # s实参

return 特点:遇到return结束程序, 返回一些信息

如果当只有一个返回值时,返回是什么就是什么类型的

如果当有多个返回值时,将返回一个元组,元组里是需要返回的值

def fun1():
a = 1
b = 2
c = a + b
d = 'alex'
return c, d
print(fun1())
>>>(3, 'alex')

函数传参:

#实参    函数执行者实际的参数

1.位置参数

2.关键字参数

3. 混合参数

1.位置参数:按照位置一一对应

def fun2(a, b, c):
print(a, b, c) fun2(1, 2, 3) >>> 1 2 3

2 关键字参数: 按照所给参数一一对应

def func3(x, y):
return x, y
print(func3(y=1, x=2)) >>>>(2, 1)

3. 混合参数 由位置参数和关键字参数组成, 关键字参数一定要在位置参数的后面

def func4(x, y, z):
return x, y, z
print(func4(1, z=2, y=3))

形参

1.位置参数

2.默认参数

1 位置参数: 按照位置一一对应

def func5(x, y):
return x + y print(func5(1, 2))

2. 默认参数,如果不传,就默认使用,函数里的默认值,如果传就使用传入的值,默认值设置一般考虑使用量比较多的情况

def login(name, sex='男'):
f = open('a1.txt', encoding='utf-8', mode='a') #打开文件写入
f.write('{}|{}\n'.format(name,sex))
f.close() while True:
content = input('请输入姓名和性别,默认为Q,按,分隔, 按Q退出')
name, sex = content.strip().split(',')
if name.upper() == 'Q':
break
if sex: #如果有值,就传入
login(name, sex)
else: #没有值,就默认使用sex='男'
login(name)

默认参数的注意事项,这里有坑

def func6(x, l1=[]):
l1.append(x)
return l1
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2)) >>>>

[1] 4612744
[1, 2] 4612744


我们可以发现两次执行时的l1可变参数,指向的是同一个内存地址,因此1和2都被添加到同一个l1中,所以在使用默认参数的时候,最好不要使用可变数字类型,不可变数字类型包括数字,字母,布尔值,元组,一般都使用前3个来设置默认参数.

如果非要是使用,我们需要使用 l = [],重新复制,更换 l 的地址

def func6(x, l=[]):
l = []
l.append(x)
return l
tag_1 = func6(1)
print(tag_1, id(tag_1))
tag_2 = func6(2)
print(tag_2, id(tag_2))

三元运算 是一种判断的简便写法

def func7(x, y):
return x if x > y else y print(func7(1, 2))

跟着太白老师学python 09day 初识函数的更多相关文章

  1. 跟着太白老师学python day11 函数名的应用 globals(), locals()

    1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...

  2. 跟着太白老师学python day10 函数嵌套, global , nonlocal

    函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 d ...

  3. 跟着太白老师学python 10day 函数的动态参数 *args, **kwargs, 形参的位置顺序

    1. *args 接收实参的位置参数, **kwargs接收实参的关键字参数 def func(*args, **kwargs): print(args, kwargs) func(1, 2, 3, ...

  4. 跟着太白老师学python day11 可迭代对象和迭代器

    如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象 如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器 如何判断一个函数是不是 ...

  5. 跟着太白老师学python day11 闭包 及在爬虫中的基本使用

    闭包的基本概念: 闭包 内层函数对外层函数的变量(不包括全局变量)的引用,并返回,这样就形成了闭包 闭包的作用:当程序执行时,遇到了函数执行,它会在内存中开辟一个空间,如果这个函数内部形成了闭包, 那 ...

  6. day08 跟着太白老师学python 文件操作

    文件操作初识: 1. 文件路径 :d:/护士主妇空姐联系方式  (文件路径不要太过复杂,容易碰到转义字符的问题, 当碰到转义字符时,需要在前面+r,或者采用双斜杠(//)) 2. 编码方式 :utf- ...

  7. 跟着太白老师学python day10 名称空间,作用域和取值顺序,变量的加载顺序

    名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域              1全局名称空间 2 内置名称空间 局部作用域           ...

  8. 跟着老王学Python

    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...

  9. python基础 (初识函数&函数进阶)

    函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

随机推荐

  1. 关于dyld: Library not loaded

    在接入智凡迪的sdk过程中,遇到以下问题: dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework   Referen ...

  2. SpringBoot 项目修改html后不需要重新启动(热部署)

    基于IDEA配置: 一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  3. XML 的 XPath 语法

    XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言.无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件. 本文将介绍 ...

  4. 完美版js金钱正则表达式校验

    <!doctype html> <html lang="en">  <head>   <meta charset="UTF-8& ...

  5. 引用 LPSTR、LPCSTR、LPTSTR、LPCTSTR、LPWSTR及LPCWSTR的意义及区别

    1.ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式.ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节.   2.Unicode:用两个字节表示一个字符 ...

  6. SecureCRT上传下载文件教程(Zmodem使用教程)

    SecureCRT是一个仿真终端连接工具.它可以方便的连接SSH服务器,远程管理Linux.同时,它还能使用多种协议方便的上传下载文件.其中Zmodem是SecureCRT支持比较好的一种古老的上传下 ...

  7. MySQL查询优化器工作原理解析

    手册上查询优化器概述 查询优化器的任务是发现执行SQL查询的最佳方案.大多数查询优化器,包括MySQL的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案.对于联接查询,MySQL优化器所 ...

  8. POJ1745动态规划

    Divisibility Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11622   Accepted: 4178 Des ...

  9. jmeter 模拟ajax/ https请求 失败的解决方法

    1.去掉请求头的Content-Type字段.Host字段 即可

  10. jmeter踩坑系列

    1.踩坑系列一: 抓包出来有host的字段,放到jmeter里面一起请求就报错了,去掉就请求正常了 1.踩坑系列二: 从花瓶复制过去 的values 前面有空格,肉眼看起来没有