公众号里的文章大多数需要编程基础,如果因为代码看不懂,而跟不上正文的节奏,可以来找我学习,相当于给自己一个新手保护期。我的课程都是循环开课。下一期的时间,点进去咨询微信↓ 生信分析直播课程(2024.9.2下一期) 生信新手保护学习小组(预计8.23下一期) 单细胞陪伴学习小组(预计8.29下一期)
我喜欢学这个东西。已经学完了,笔记陆续整理完善发布ing
1.常规函数
def my_mean(x,y):
num = x+y
dem = 2
return num/dem
my_mean(10, 20)
## 15.0
用 def
创建函数,后跟函数名称,小括号里是参数名称,多个参数之间用逗号分隔,行末加冒号。
函数的主体代码要缩进。return
语句表示函数返回的内容。return
是必需的,不会像R语言那样自动返回最后一行的结果。
练习:常规函数
1.写一个函数
binge_male(),
接受一个参数 num_drinks
,并return
男性的binge status。2.写一个函数
binge_female(),
接受一个参数num_drinks
,并return
女性的binge status。3.写一个
binge_status()
函数,该函数接受 2 个参数:sex 和 num_drinks
,用 binge_male()
和 binge_female()
函数,返回对应性别和num_drinks
的binge status。。喝了
5
杯的'male'
喝了
5
杯的'female'
# Binge status for males
____ ____(____):
if num_drinks < 5:
____ 'non-binge'
else:
____ 'binge'
# Check
print(binge_male(6))
# Binge status for females
____ ____(____):
if num_drinks < 4:
____ 'non-binge'
else:
____ 'binge'
# Check
print(binge_female(2))
# A function that returns a binge status
____ ____(____):
if sex == 'male':
return ____(____)
else:
return ____(____)
# Male who had 5 drinks
print(____(____, ____))
# Female who had 5 drinks
print(____(____, ____))
答案:
# Binge status for males
def binge_male(num_drinks):
if num_drinks < 5:
return 'non-binge'
else:
return 'binge'
# Check
print(binge_male(6))
## binge
# Binge status for females
def binge_female(num_drinks):
if num_drinks < 4:
return 'non-binge'
else:
return 'binge'
# Check
print(binge_female(2))
## non-binge
# A function that returns a binge status
def binge_status(sex,num_drinks):
if sex == 'male':
return binge_male(num_drinks)
else:
return binge_female(num_drinks)
# Male who had 5 drinks
print(binge_status('male', 5))
## binge
# Female who had 5 drinks
print(binge_status('female', 5))
## binge
2.lambda 函数
Python 中的未命名函数称为 lambda 函数。类似于R里面的未命名函数,就是放在apply、lapply里面直接用的函数。
def add_1(x):
return x + 1
a1_lam = lambda x:x+1
a1_lam(3)
## 4
也可以保存下来,像常规函数一样使用。与常规函数没有太大区别。lambda 函数中的关键字是 lambda
而不是 def
。lamda函数的代码通常只有一行。
练习:lambda函数
1.把下面的 sq_func()
函数转换为 lambda 函数sq_lambda
。
2.把3代入lambda函数,并输出结果
# A function that takes a value and returns its square
def sq_func(x):
return(x**2)
# A lambda function that takes a value and returns its square
sq_lambda = ____ ____: ____
# Use the lambda function
print(____(____))
答案:
# A function that takes a value and returns its square
def sq_func(x):
return(x**2)
# A lambda function that takes a value and returns its square
sq_lambda = lambda x: x**2
# Use the lambda function
print(sq_lambda(3))
## 9