1、函数

def my_len():  #自定义函数(相当于len)
i = 0
for k in s:
i += 1
print(i)
print(my_len())
#输出None,因为没有返回值

2、返回值

#返回值的3种情况
# 没有返回值 —— 返回None
# 不写return
# 只写return:结束一个函数的继续
# return None —— 不常用
# 返回1个值
# 可以返回任何数据类型
# 只要返回就可以接收到
# 如果在一个程序中有多个return,那么只执行第一个
# 返回多个值
# 用多个变量接收:有多少返回值就用多少变量接收
# 用一个变量接收: 得到的是一个元组

3、break与return的区别

#break会结束当前条件语句和循环语句返回上一层级

#return会结束函数返回此时的值,后面的不再执行

def func():
l = ['老大','老二']
for i in l:
print(i)
if i == '老大':
return None
print('='*10)#此处不打印
ret = func()
print(ret)
#输出 老大
# None

4、形参与实参

#站在实参的角度上:
  #按照位置传参
  #按照关键字传参
  #混着用可以:但是 必须先按照位置传参,再按照关键字传参数
    # 不能给同一个变量传多个值

#站在形参的角度上
  #位置参数:必须传,且有几个参数就传几个值
  #默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的

def classmaste(name,sex='男'):
print('%s:%s' %(name,sex))
classmaste('张三')
classmaste('张三','女')
#输出
#张三:男
#张三:女

5、

#只有调用函数的时候
  #按照位置传 : 直接写参数的值
  #按照关键字: 关键字 = 值

#定义函数的时候:
  #位置参数 : 直接定义参数
  #默认参数,关键字参数 :参数名 = '默认的值'
  #动态参数 : 可以接受任意多个参数
    #参数名之前加*,习惯参数名args,
    #参数名之前加**,习惯参数名kwargs
  #顺序:位置参数,*args,默认参数,**kwargs

def sum(*args):
n = 0
for i in args:
n+=i
return n
print(sum(1,2)) #输出3
print(sum(1,2,3))#输出6
print(sum(1,2,3,4)) #输出10
def func(**kwargs):
print(kwargs)
func(a = 1,b = 2,c =3) #输出{'b': 2, 'a': 1, 'c': 3}
func(a = 1,b = 2) #输出{'b': 2, 'a': 1}
func(a = 1) #输出{'a': 1}

# 动态参数有两种:可以接受任意个参数
  #*args : 接收的是按照位置传参的值,组织成一个元组
  #**kwargs: 接受的是按照关键字传参的值,组织成一个字典
  #args必须在kwargs之前

def func(*args,default = 1,**kwargs):
print(args,kwargs)

6、动态参数的另一种传参方式

#站在形参的角度上,给变量加上*,就是组合所有传来的值。

def func(*args):
print(args)
func(1,2,3,4,5)

#站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

def func(*args):
print(args)
l = [1,2,3,4,5]
func(*l)

7、相关练习

1、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

def func(l):
return l[1::2]
print(func([1,2,3,4,5,6,7,8]))

2、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于5。

def func(x):
if len(x) > 5:
print("长度大于5")
return len(x)
print(func('abcd'))

3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

def func(l):
if len(l) > 2:
print(l[0:2])
return l[:2]
func([2,3,4,5])

4、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。

def func(s):
dic = {'num':0,'alpha':0,'space':0,'other':0}
for i in s:
if i.isdigit():
dic['num']+=1
elif i.isalpha():
dic['alpha'] += 1
elif i.isspace():
dic['space'] += 1
else:
dic['other'] += 1
return dic
print(func('+0-0skahe817jashf wet1'))

5、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。

def func(x):
if type(x) is str and x:
for i in x:
if i == ' ':
return True
elif x and type(x) is list or type(x) is tuple:
for i in x:
if not i:
return True
elif not x:
return True
print(func([]))

6、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

dic = {"k1": "v1v1", "k2": [11,22,33,44]}
def func(dic):
for k in dic:
if len(dic[k]) > 2:
dic[k] = dic[k][:2]
return dic
print(func(dic))

7、写函数,接收两个数字参数,返回比较大的那个数字。

def func(a,b):
if a>b:
return a
else:
return b
print(func(1,5))
												

python note 09 初识函数的更多相关文章

  1. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  2. python基础之 初识函数&函数进阶

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

  3. day 09 初识函数

    今日主要学习了 一. 什么是函数二. 函数定义, 函数名, 函数体以及函数的调?三. 函数的返回值四. 函数的参数 一, 什么是函数               如果找不到合适的函数名称 ,用 fu ...

  4. Python之路【第五篇】python基础 之初识函数(一)和文件管理

    转载请注明出处http://www.cnblogs.com/wupeiqi/articles/5453708.html 函数 一.背景                                 ...

  5. Python进阶-I 初识函数(function)

    函数 在java中叫方法. 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print() ...

  6. python note 14 其他函数及递归应用

    1.repr用法 print("你好") # 用户看着舒服 print(repr("你好")) # 真实的字符串表示形式(正式的)print("我叫% ...

  7. python之路--初识函数

    一 . 函数 什么是函数 f(x) = x + 1 y = x + 1 # 函数是对功能或者动作的封装 函数的语法 def 函数名(): 函数体 调用: 函数名() def play(): print ...

  8. python记录_day09 初识函数

    一.认识函数 函数:对动作或者功能的封装 格式: 函数声明     def  函数名(): 函数体 函数调用     函数名() #定义函数 def xiao(): print("你的笑像一 ...

  9. 【学习笔记】--- 老男孩学Python,day10, 初识函数 形参、实参

    函数:对功能的封装语法: def 函数名(形参): 函数体 函数名(实参) 函数名:命名规则和变量一样 函数的返回值: return, 函数执行完毕. 不会执行后面逻辑 1. 如果函数中不写retur ...

随机推荐

  1. Webpack 学习总结

    1.Webpack的特性 webpack 模块打包机,分析你的项目结构,找到JavaScript模块以及其他一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),将其打包为合适的格式以 ...

  2. ASP.NET Core 1.1版本之Hello word

    1.下载ASP.NET Core 1.1版本,并且安装. 2.新建一个工作文件夹,本文以WebApiFrame名称为例建立一个新的文件夹: mk WebApiFrame 3.启动命令行,在命令行中进入 ...

  3. Asp.NET 简易通用WebServices 附件服务

    [toc] 总述: 用了很久的附件分离服务, .NET 2.0平台开始使用.  配置好服务后, 由调用端定义并管理目录级次.  调用端存储目录即可.  附件服务: 相应配置节点放入 web.confi ...

  4. js滚动到指定位置

    序言:在网络上百度,关键字:“js div滚动到指定位置”,结果基本上大同小异!各种大神都给我们总结出来了四种滚动到指定位置的办法,可惜再下愚钝,每个都不会用,所以写了一个超级简单的方法来使初学者一看 ...

  5. Python课程第四天作业

    1.定义一个函数,该函数可以实现控制台输入,最终返回一个int类型的正整数 def chr_to_int(): user_input = input('请输您要转换的字符串:') if user_in ...

  6. php的运行流程

    1.Zend引擎:Zend整体用纯C实现,是PHP的内核部分,他将PHP代码翻译(词法.语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法.实现了基本的数据结构(如:hashta ...

  7. pycharm移动项目文件后,运行报错

    pycharm移动项目文件后,运行报错: ModuleNotFoundError:  No module named 'D:/my_project/my_cases/email139cases/tes ...

  8. eclipse详细安装教程与环境变量设置

    地址:https://blog.csdn.net/q651742112/article/details/73477400 源地址:https://www.cnblogs.com/yeminglong/ ...

  9. 解决安装fiddler后IE打开网页提示“代理服务器无响应”

    环境:win8.1+IE11 安装fiddler4后,启动fiddler,IE11打开百度网站,打开失败:代理服务器无响应,如图: 在网上找了各种方法,修改fiddler的设置,均无法解决这个问题,无 ...

  10. React Native踩坑之旅

    原文连接:http://www.studyshare.cn/blog-front/blog/details/1137 最近做一个app,使用React Native实现,如果严格按照RN官方文档去配置 ...