最近实验室事不多,正好抽出时间好好学习一下python,准备每个阶段都以blog的方式来进行记录,欢迎大家交流
python中的变量需要被赋值之后才能创建成功
try:
print(X)
except NameError:
print('not defined')
输出为:not defined
关于类方面,先定义一个类,再实例话一个类,我们可以看看两者的区别
class my_class(object):
pass
myclass = my_class()
print(type(my_class))
print(type(myclass))
输出为:
<class 'type'>
<class '__main__.my_class'>
可见一个类实例化之后它的类型就是我们自己定义的类型
接下来是关于字符串的一些操作:
1.去除字符串中的空格:
s = ' abcefg h'
print(s.strip()) #去除字符串中的所有空格
print(s.lstrip()) #去除字符串中的左边的空格
print(s.rstrip()) #去除字符串中右边的空格
输出为:
abcefg h
abcefg h
abcefg h
abcefg h
2.字符串的连接
s1 = 'abc'
s2 = 'def'
print(s1 + s2) #直接加就好
输出为:abcdefg
3.改变字符串中的大小写
s = 'ABCDabcd'
print(s.upper())
print(s.upper().lower())
print(s.capitalize())#将首字母改为大写,其他改为小写
输出为:
ABCDABCD
abcdabcd
Abcdabcd
4.字符串位置查询
s1 = 'abcdefg'
s2 = 'abcefgh'
print(s1.index('bcd'))
try:
print(s2.index('bcd'))
except ValueError:
print('Not found')
输出为:
1
Not found
5.字符串之间的比较
s = ''
s1 = 'abcdefg'
s2 = 'abdefgh'
print(s1 == s2)
print(s1 < s2)
print(s1 > s2)
if not s:
print('the string is empty')
输出为:
False
True
False
the string is empty
6.字符串的分割和连接,在数据分析时很有用
#字符串的分割
s = 'abc,efg,hij'
splitted_1 = s.split(',')#
splitted_2 = s.split(',',1)#表示只分割一次
print(splitted_1)
print(splitted_2)
print(type(splitted_1))
print(type(splitted_2))
s1 = """abc
def
ghi"""
print(s1.split('\n'))
print(s1.splitlines())
#字符串的连接
s2 = ['abc','def','hij']
print(' '.join(s2))
print('-'.join(s2))
输出为:
['abc', 'efg', 'hij']
['abc', 'efg,hij']
<class 'list'>
<class 'list'>
['abc', 'def', 'ghi']
['abc', 'def', 'ghi']
abc def hij
abc-def-hij
7.字符串中常用的一些判断
s = 'abcdefg'
print(s.startswith('abc'))
print(s.endswith('efg'))
print('1234abcd'.isalnum())
print('\t12ab'.isalnum())
print('abcd'.isalpha())
print(' '.isspace())
print('abcd12345'.islower())
print('ABCD12345'.isupper())
print('Hello World'.istitle())#检验字符串首字母是否为大写
输出为:
True
True
True
False
True
True
True
True
True
8.字符串的进制转换
print(int('1111',2))#转化为2进制
print(int('ff',16))#转化为16进制
输出为:
15
255
接下来时python中的循环,举两个简单的例子,分别为for循环和while循环
for i in range(0,10,2):
print(i)
print('\n')
j = 0
while j < 10:
print(j)
j = j + 1
输出为:
0
2
4
6
8
0
1
2
3
4
5
6
7
8
9
最后是关于函数的部分
1.python中的函数可以返回一个以上的值
def func1(argv1,argv2):
return argv1,argv2
f= func1(100,200)
print(f)
print(type(f))
输出为:
(100, 200)
<class 'tuple'>
2.python函数中的可变参数
def func(name, *numbers):#将name后面的参数封装在一个tuple中,tuple相当与一个只读数组
print(type(numbers))
print(numbers)
print(numbers[0])
print(numbers[3])
return 'Done'
func('Tom', 1, 2, 3,'abc', 'def')
输出为:
<class 'tuple'>
(1, 2, 3, 'abc', 'def')
1
abc
def func(name, **kvs): #**将name后的参数封装到dict中
print(name)
print(type(kvs))
print(kvs)
func('Tom',China = 'Beijing', UK = 'london')
func('Tom',**{'China' : 'Beijing', 'UK' : 'London'})
输出为:
Tom
<class 'dict'>
{'China': 'Beijing', 'UK': 'london'}
Tom
<class 'dict'>
{'China': 'Beijing', 'UK': 'London'}
def func(a,b,c = 0,*args,**kvs):
print(a,b,c)
print(args)
print(kvs)
print('\n')
func(1,2)
func(1,2,3)
func(1,2,3,'a','b','c')
func(1,2,3,'a','b',china = 'bj',uk = 'ld')
func(1,2,3,*('a','b'),**{'china' : 'BJ','uk' : 'LD'})
输出为:
1 2 0
()
{}
1 2 3
()
{}
1 2 3
('a', 'b', 'c')
{}
1 2 3
('a', 'b')
{'china': 'bj', 'uk': 'ld'}
1 2 3
('a', 'b')
{'china': 'BJ', 'uk': 'LD'}
3.python中的函数可以作为参数
def sum(x, y, p = None):
s = x + y
if p:
p(s)
return s
sum(100,200)
sum(100,200,print)
输出为:300
def do_sum(data,method):
return method(data)
print(do_sum([1,2,3,4],sum))
输出为:10