作为生信从业者,写代码,串流程伴随着日常的工作。从一开始的杂乱无章,到慢慢学习摸索,以及观看别人优秀的代码,逐渐将代码写得清晰,可读性强。虽然过程比较漫长,但一经掌握好的编程习惯,它便会一直伴随着我的日常工作。 之前写代码,为了避免将代码写在一行,总是用反斜杠"\"来分行,且"\"后面不能有空格。有时候少打了反斜杠"\"就会报错,编程效率极低,让人很恼火,乐趣也少了几分。如下面的例子:cmd = f"{fastp} -i {r1} -I {r2} " \ f"-o {clean_r1} -O {clean_r2} " f"--unpaired1 {unpaired1} --unpaired2 {unpaired2} --failed_out {failed} " \ f"--json {json} --html {html} -w 10 " \ f"--trim_poly_g --poly_g_min_len 50 " \ f"--cut_front --cut_front_window_size 1 " \ f"--cut_tail --cut_tail_window_size 1 --cut_tail_mean_quality 15 " \ f"--cut_right --cut_right_window_size 5 --cut_right_mean_quality 20 " \ f"--average_qual 20 --length_required 30 " \ f"--detect_adapter_for_pe"
经过一些学习和尝试,将代码写在括号()中,不仅可以省去了反斜杠"\",增强了编程的效率,也增加了代码的美观度和可读性,使得代码像诗一样优雅
。cmd = ( f"{fastp} -i {r1} -I {r2} " f"-o {clean_r1} -O {clean_r2} " f"--unpaired1 {unpaired1} --unpaired2 {unpaired2} --failed_out {failed} " f"--json {json} --html {html} -w 10 " f"--trim_poly_g --poly_g_min_len 50 " f"--cut_front --cut_front_window_size 1 " f"--cut_tail --cut_tail_window_size 1 --cut_tail_mean_quality 15 " f"--cut_right --cut_right_window_size 5 --cut_right_mean_quality 20 " f"--average_qual 20 --length_required 30 " f"--detect_adapter_for_pe")
下面的代码是用python程序生成R代码的部分内容,也是采用了括号(),同样使得代码显得比较优雅。rline_line = ( f'\n' f'p <- ggVennDiagram(gene_list, label_alpha = 0) +\n' f' scale_fill_distiller(palette = "Spectral")\n' f'\n' f'ggsave(\'{od}/tumor_tpm{tumor_tpm_cutoff}_ratio{cutoff}.png\',\n' f' plot = p, width = 10, height = 8, units = "in")\n' f'\n' f'common_genes <- Reduce(intersect, gene_list)\n' f'print(\'{sid_range}\')\n' f'print(common_genes)\n' f'\n' f'writeLines("CommonGenes", \'{common_genes_file}\')\n' f'write(common_genes, \'{common_genes_file}\', append = TRUE)\n')
下表是使用反斜杠"\"和使用括号隐式续行的比较,可以看到,使用括号的表现是更加优秀的。- 代码中的f是python3.6版本以后才有的功能,是一种格式化操作。
- 文中除了使用圆括号()之外,在一些代码中,也可以使用方括号[],花括号{}在不同的场景中进行代码书写,此处不再列举。