python学习笔记(1)杂谈

前言

好多天没更新了,最近在学python,学习告一段落,现在来更新一些使用的函数和小技巧。

input

很多人希望自己的程序可以从外界传参,或者说在程序运行以后再传进去参数那么我们就可以用到input函数。让我们看一下效果。

c=input("请输入打印内容:")
print(c)

运行结果:

G:\Users\dell-pc\Anaconda3\envs\tensorflow\python.exe C:/Users/dell-pc/PycharmProjects/untitled/练习.py
请输入打印内容:你好啊,同学##这五个字是在这个界面输入的
你好啊,同学

Process finished with exit code 0

交换

两个变量的数据交换,对于其他编程语言来说要借用一个中间变量。但是python不需要,让我们用代码看一下。

##其它编程语言
a=1
b=2
c=a
a=b
b=c
print(a,b)
## python
e=1
g=2
e,g=g,e
print(e,g)

结果:

2 1
2 1

Process finished with exit code 0

可以看到短短一行,效果一样。

.format

这是填充函数,让我们看一下效果。

a="{0}b vb".format("aaa")
print(a)
a="{c}b vb".format(c="aaa")
print(a)
print("%c""%c"%(1223,44))
print("%d+%d=%d"%(4,5,6))

看一下结果:

aaab vb
aaab vb
Ӈ,
4+5=6

这个具体作用我也说不太清楚,但是我在代码中经常见到。

函数文档

函数文档的作用类似于可被用户观看的注释,让我们看一下效果。

def bi(a):
    '函数文档'
    print('七夕快乐的敲代码'+a)
print(bi.__doc__)

结果:

函数文档

函数文档通过引号来开始和结尾。调用方法是.doc。而七夕快乐的敲代码是单身狗的快乐生活请忽略。

多参数函数

在定义函数的时候,可以传进去参数,但是参数一般有限,有些函数就是意外,比如print。现在我们来定义一个可以传任意数量参数的函数。

def ci(*a,b):
    for i in a:
        print(len(i))
    print(b)
d=ci("a","abc",b=1)

结果:

1
3
1

Process finished with exit code 0

可以看到只要在参数前加上*就可以让参数无限化。很实用。

全局变量 global

我们知道函数里面的变量是局部变量,如果在函数里面定义的变量在函数外实际上是不存在的。例如:

def f():

    g=100
f()
print(g)

结果:

Traceback (most recent call last):
  File "C:/Users/dell-pc/PycharmProjects/untitled/练习.py", line 5, in <module>
    print(g)
NameError: name 'g' is not defined

同理也无法完成在函数里对函数外的变量进行改变。

g=50
def f():

    g=100
f()
print(g)

结果为:

50

Process finished with exit code 0

所以我们就要用到全局变量 global:
让我们看一下:

g=50
def f():
    global g
    g=100
f()
print(g)

结果:

100

Process finished with exit code 0

这就是全局变量的魅力。

嵌套函数

一般来说函数可能不是一个整体。一般来说这会有两个解决办法,一是在函数里面调用其他函数,二就是子函数。我们在这里谈一下,子函数的建立和调用。

def fun(x):
    def funy(y):
        return x*y
    return funy
i=fun(8)
print(type(i))
print(i(6),fun(8)(6))

结果:

<class 'function'>
48 48

Process finished with exit code 0

可以看到我们传入一个参数8后得到的是一个函数,这个函数应该是8*y。如果要是一次传入所有参数,就需要用括号的嵌套,注意顺序。

匿名函数lambda

有时候有的函数我们可能只会用到一两次,没有必要单独去定义一个函数去占用内存。所以这时候就用到了匿名函数。

g=lambda x:x+1## 匿名函数
print(g(2))

结果:

3

Process finished with exit code 0

这种函数随时调用,而且用完以后就不会存在于内存之中,所以很适合临时使用。

filter过滤器

过滤器的作用是保留符合条件的结果。值得注意的是条件必须是个函数,如果我们用匿名函数写就会很方便。让我们把它结合一下。

print(list(filter(lambda x:x%2,range(10))))
print(list(filter(lambda x:x==0,range(10))))

结果:

[1, 3, 5, 7, 9]
[0]

Process finished with exit code 0

最后:汉诺塔

最后我们说一下递归,什么是递归,递归就是调用自己。著名的汉诺塔游戏就可以以利用递归思想来解谜。这里是一个关于他的小函数,送给大家。

def hannuo(n,x,y,z):
    if n==1:
        print(x,"->",z)
    else:
        hanhuo(n-1,x,z,y)
        print(x,"->",z)
        hanhuo(n-1,y,x,z)#(想移动,借助,移动目标)

n=int(input("你想输入的层数:"))
hanhuo(n,"x","y","z")

输入4,结果为:

你想输入的层数:4
x -> y
x -> z
y -> z
x -> y
z -> x
z -> y
x -> y
x -> z
y -> z
y -> x
z -> x
y -> z
x -> y
x -> z
y -> z

Process finished with exit code 0

这篇就写到这里了,希望能帮到同为学习者的您。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值