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. Zabbix调优不完全指南(https://www.jianshu.com/p/2d911d55448f)

    从学习搭建zabbix到完成各类监控.调优.二次开发已经过去了两年,期间通过QQ学习群.zabbix官方社区.各个技术博客整理学习了不少关于各种报错的处理方法,现在将常见的一些报错处理方法整理出来分享 ...

  2. Go语言 并发编程

    Go语言 并发编程 作者:Eric 微信:loveoracle11g 1.创建goroutine // 并行 是两个队列同时使用两台咖啡机 // 并发 是两个队列交替使用一台咖啡机 package m ...

  3. docker 搭建 hustoj

    docker 搭建 hustoj hustoj 是个GPL开源的OJ,其提供了docker形式的安装方式. 为执行方便,选择使用aliyun提供的docker镜像来加速安装. 拉取镜像 docker ...

  4. DCDC电源 TPS54525

    电路图: 输入电压12V,输出电压5V.不接负载可以获得5V输出,接入负载后只有4mV,且PG为低. 预计原因:可能是上电瞬间电流过大,芯片过流保护. 解决方案:SS软启动引脚的电容C331加大至1u ...

  5. 安装yii2 需要token 记录

    在安装yii2过程中会提示需要token,参照github help: https://help.github.com/articles/creating-a-personal-access-toke ...

  6. 错误 88 error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明) c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afxcoll.h 590

    最近接收了以前新公司遗留的代码,一个函数动不动就少的一千行,多的几千行,真是受不了这编码风格! 于是便使用了VS自带的重构工具,选择代码后右键-重构-提取方法,提取完方法就编译不过,想了好久原因,原来 ...

  7. Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg

    Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...

  8. 小程序坑之 swiper组件

    表现:swiper 内容 空白 原因:swiper组件的current值为n时,重新刷新页面,current值不变,当刷新后的swiper item的数量少于 n 时,swpier找不到对应的item ...

  9. nodejs版 阿里云开放api签名算法

    阿里云 API 签名 github:https://github.com/liuyinglong/aliyun; npm :https://www.npmjs.com/package/aliyun-a ...

  10. python模块 os&sys&subprocess&hashlib模块

    os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...